我写了一个不工作的触发器。我错过了啥吗?
Posted
技术标签:
【中文标题】我写了一个不工作的触发器。我错过了啥吗?【英文标题】:I wrote a trigger which is not working. Am I missing something?我写了一个不工作的触发器。我错过了什么吗? 【发布时间】:2013-06-07 07:13:55 【问题描述】:CREATE or REPLACE TRIGGER trigger_name
AFTER INSERT OR UPDATE
ON table1
FOR EACH ROW
BEGIN
INSERT INTO table2
VALUES (NEW.request_id, NEW.user_concurrent_program_name,
NEW.argument_text, NEW.comments, NEW.acknowledgement_status,
SYSDATE, NEW.acknowledged_by);
END;
/
但这会引发以下错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
2/4 PL/SQL: SQL Statement ignored
3/17 PLS-00201: identifier 'NEW.REQUEST_ID' must be declared
“NEW”不应该是插入到表中的新行详细信息吗?
【问题讨论】:
【参考方案1】:试试下面的代码
CREATE or REPLACE TRIGGER trigger_name
AFTER INSERT OR UPDATE
ON table1
FOR EACH ROW
BEGIN
INSERT INTO table2
VALUES (:NEW.request_id, :NEW.user_concurrent_program_name,
:NEW.argument_text, :NEW.comments, :NEW.acknowledgement_status,
SYSDATE, :NEW.acknowledged_by);
END;
/
我刚刚把 : 放在 ANew 关键字前面插入值。
【讨论】:
以上是关于我写了一个不工作的触发器。我错过了啥吗?的主要内容,如果未能解决你的问题,请参考以下文章
mysql 中 SET autocommit=1 和 START TRANSACTION 之间的区别(我错过了啥吗?)