Azm*_*him 3 sql oracle triggers
此新租借历史记录表的触发器,可防止从表中删除.
CREATE OR REPLACE TRIGGER RENTALHIS_DEL
BEFORE DELETE ON RENTALHISTORY
BEGIN
dbms_output.put_line( 'Records can not be deleted');
END;
DELETE FROM RENTALHISTORY WHERE RENTALID = 1;
-- It is deleting before it says it can not delete
1 rows deleted.
Records can not be deleted
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)dbms_output.put_line( 'Records can not be deleted');
上面只是打印文本,触发器成功完成,然后删除发生.你想做的是提出错误以防止程序完成.
使用标准程序raise_application_error停止程序并引发错误:
CREATE OR REPLACE TRIGGER RENTALHIS_DEL
BEFORE DELETE ON RENTALHISTORY
BEGIN
raise_application_error(-20001,'Records can not be deleted');
END;
/
Run Code Online (Sandbox Code Playgroud)
您想引发错误,而不是打印消息。无论如何都会发生删除:
CREATE OR REPLACE TRIGGER RENTALHIS_DEL
BEFORE DELETE ON RENTALHISTORY
BEGIN
RAISE_APPLICATION_ERROR (-20000, 'Deletion not supported on this table');
END;
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用instead of触发器来防止发生删除:
CREATE OR REPLACE TRIGGER RENTALHIS_DEL
INSTEAD OF DELETE ON RENTALHISTORY
BEGIN
dbms_output.put_line( 'Records cannot be deleted');
END;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12179 次 |
| 最近记录: |