0
我想创建一个'而不是删除'触发器来限制当输入的值超过一定数量时删除一行。Oracle SQL而不是删除触发器
我有2列的发票表:发票(InvoiceID数,总数)
我想触发器触发,如果我尝试删除在总拥有储值> = 100行和预防删除。
到目前为止,我对我想要的东西有一个粗略的描述,但我不确定确切的语法是否正确。
CREATE OR REPLACE TRIGGER IOFD_INVOICE
INSTEAD OF DELETE ON INVOICE
BEGIN
DECLARE
TTL INTEGER;
SELECT TOTAL = TTL
FROM INVOICE
IF TTL >= 100
BEGIN
RAISERROR('Record cannot be deleted.')
ROLLBACK
END
ELSE
BEGIN
DELETE FROM INVOICE
END
END;
我想到的INSTEAD OF触发器可以在表上使用,但我得到了以下错误消息:
Error report -
ORA-25002: cannot create INSTEAD OF triggers on tables
25002. 00000 - "cannot create INSTEAD OF triggers on tables"
*Cause: Only BEFORE or AFTER triggers can be created on a table.
*Action: Change the trigger type to BEFORE or AFTER.
来完成“但我不知道确切的语法是正确的。” DB先生在一个虚拟DB中进行测试时会说什么? –
@MitchWheat感谢提醒我。更新以添加错误消息 – eatsleepcode