尝试通过触发器(在插入时)插入多行会导致错误

时间:2019-05-02 12:52:53

标签: mysql triggers

尝试使用触发器在表中插入多行(插入时),但仅适用于一行。我从表单中返回错误(没有具体说明,只是原始插入内容有错误)

可以正常工作1行,但是会发生多次崩溃。这种语法有什么问题?

BEGIN
set @moonid = 1;
insert into quicknotedesc (custid,moonid) VALUES (New.id,(@moonid)),(New.id,(@moonid+1));
END

1 个答案:

答案 0 :(得分:1)

触发器主体的语法似乎有效。

几乎每个SQL客户端都有一种机制来检测错误情况并检索错误消息。可能是因为尝试违反custid的{​​{1}}列上的唯一约束或其他一些违反约束的错误。我们只是在猜测。

请考虑使客户端能够检索实际的错误消息。并考虑测试其他客户端(如MySQL命令行客户端)的触发器行为。


再次回答所提出的问题:

触发器主体的语法似乎有效。

演示:

quicknotedesc

CREATE TABLE quicknotedesc 
( custid  BIGINT UNSIGNED NOT NULL 
, moonid  BIGINT UNSIGNED NOT NULL
, PRIMARY KEY (custid, moonid)
);

CREATE TABLE foo
( id BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT 
);

DELIMITER $$

CREATE TRIGGER foo_ai
AFTER INSERT ON foo
FOR EACH ROW
BEGIN
  SET @moonid = 1;
  INSERT INTO quicknotedesc (custid,moonid) VALUES (New.id,(@moonid)),(New.id,(@moonid+1));
END$$

DELIMITER ;