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