【发布时间】:2013-04-01 21:00:04
【问题描述】:
我在表“a”上有一个插入前触发器,它基本上复制并转换查询以将插入到表“b”中。这是此触发器的伪代码示例:
FOR EACH ROW
BEGIN
IF @inserting IS NULL THEN
SET @inserting = 1;
INSERT INTO b SET
col1 = NEW.col1
col2 = NEW.cola
col3 = some_stored_proc(NEW.col3);
SET @inserting = NULL;
END IF
END
但是,您可能会注意到,如果 INSERT 失败,@inserting 将保留为 1。如果插入到表“b”失败,我需要确保将其设置回 NULL,同时导致表“a”上的原始插入也失败(以免两者之间的数据不匹配)。
有没有办法做到这一点?
【问题讨论】:
-
为了防止混淆,这个触发器的原因实际上是允许一个新的模式,同时维护一些旧应用程序依赖的旧模式。
-
是否可以选择 cgi 脚本?
-
@marabutt:老实说,我不知道,但考虑到我没有编写 CGI 脚本的经验,我更倾向于说不,并在我看之前用稍微熟悉的触发器探索可能性进入那个。
标签: mysql sql triggers sqlexception