1
CREATE OR REPLACE trigger million_trigger
BEFORE INSERT or UPDATE on employee
FOR EACH ROW
WHEN (new.SALARY>1000000)
BEGIN
if inserting then       
    RETURN ;    
end if;

if updating then 
    RETURN ;
end if;
end;
/

BEGIN
    PKG_insertrec.insertrec(121,'Mark',2000000);
END;
/

こんにちは、SALARY が 1,000,000 を超える場合にレコードの挿入を防止するトリガーを作成しました。パッケージPKG_insertrecにあるストアドプロシージャinsertrecをすでに作成しました。問題は、トリガーが正常にコンパイルされたにもかかわらず、トリガーが機能しないことです。

4

1 に答える 1

6

IMHO, your approach is wrong - you don't need triggers for such a simple input validation - just used constraints.

ALTER TABLE employee ADD CONSTRAINT employee_salary CHECK (salary <= 1000000);

If you really want to use a trigger, you should raise instead of return when an invalid input is given.

于 2013-10-05T16:38:44.693 に答える