Oracleデータベース学習ノート(26)--トリガーの概念と分類
3910 ワード
トリガの概念
トリガは、追加削除操作を行うときに、そのルールを満たす限り、自動的にトリガされ、呼び出す必要がありません.
トリガの分類
加for each rowは、oldまたはnewのオブジェクト/行レコードを使用するためです.
トリガ内のトリガ文と擬似レコード変数の値
トリガ文
:old
:new
Insert
すべてのフィールドが空です(null)
挿入するデータ
Update
以前のローの値を更新
更新後の値
Delete
以前のローの値を削除
すべてのフィールドが空です(null)
学習ノート
1、レコードを挿入し、新入社員の入社【文レベルトリガー】を出力するcreate or replace trigger t1
after
insert
on person
declare
begin
dbms_output.put_line(' ');
end;
トリガt 1INSERT INTO person
VALUES (1, ' ');
COMMIT;
SELECT *
FROM person;
2、従業員に給料を下げることができない【行レベルトリガ】create or replace trigger t2
before
update
on emp
for each row
declare
begin
if :old.sal>:new.sal then
raise_application_error(-20001, ' ');
end if;
end;
カスタム例外かすたむれいがい:raise_application_Error(-2001~-20999間、「エラーメッセージ」);
トリガt 2SELECT *
FROM emp
WHERE empno = 7788;
UPDATE emp
SET sal = sal - 1
WHERE empno = 7788;
COMMIT;
1、レコードを挿入し、新入社員の入社【文レベルトリガー】を出力する
create or replace trigger t1
after
insert
on person
declare
begin
dbms_output.put_line(' ');
end;
トリガt 1
INSERT INTO person
VALUES (1, ' ');
COMMIT;
SELECT *
FROM person;
2、従業員に給料を下げることができない【行レベルトリガ】
create or replace trigger t2
before
update
on emp
for each row
declare
begin
if :old.sal>:new.sal then
raise_application_error(-20001, ' ');
end if;
end;
カスタム例外かすたむれいがい:raise_application_Error(-2001~-20999間、「エラーメッセージ」);
トリガt 2
SELECT *
FROM emp
WHERE empno = 7788;
UPDATE emp
SET sal = sal - 1
WHERE empno = 7788;
COMMIT;