使用 RAISE 创建触发器
Posted
技术标签:
【中文标题】使用 RAISE 创建触发器【英文标题】:Create triggers with RAISE 【发布时间】:2014-04-07 16:55:58 【问题描述】:我正在尝试将表限制为仅一条记录并禁用所有添加更多记录的尝试。
我创建了这个触发器:CREATE TRIGGER abort_insert_to_my_tbl BEFORE INSERT ON my_tbl
BEGIN
RAISE(ABORT,"You can't add records to my_tbl")
END;
但我不断收到此错误:
Error: near line 3080: near "RAISE": syntax error
我做错了什么?
【问题讨论】:
【参考方案1】:正如documentation 所示,RAISE 是一个函数,而不是语句,因此不能直接在触发器主体中使用。
要在语句中使用函数,例如使用 SELECT 语句:
CREATE TRIGGER abort_insert_to_my_tbl
BEFORE INSERT ON my_tbl
BEGIN
SELECT RAISE(ABORT, 'You can''t add records to my_tbl');
END;
【讨论】:
以上是关于使用 RAISE 创建触发器的主要内容,如果未能解决你的问题,请参考以下文章
ORA-4088、ORA-6512 使用触发器和 RAISE_APPLICATION_ERROR
为啥不允许在 PL/SQL 触发器中使用 ROLLBACK 语句,但 RAISE_APPLICATION_ERROR 是?
使用 raise_application_error 的 PL SQL 触发器会引发错误。