错误1111:来自插入的触发器上的mysql

时间:2012-03-28 21:10:38

标签: mysql mysql-error-1111

我试图理解为什么当我尝试运行一个盆插入语句来测试它时,这个触发器一直给我一个关于无效使用分组函数的错误。

我尝试过这个来弄清楚我做错了什么,但错误仍然保持不变。错误1111

DROP TRIGGER a_num;
DELIMITER //
CREATE TRIGGER a_num BEFORE INSERT ON test_a

  FOR EACH ROW BEGIN
DECLARE last INT DEFAULT 0;
INSERT INTO test_b SET full_name = CONCAT_WS(' ', NEW.f_name, NEW.l_name);
SET last = COUNT(id);
UPDATE test_b SET number = CONCAT_WS('-',  last, LEFT(NEW.f_name, 2), LEFT(NEW.f_name, 2)) WHERE id = last;
END;
//

请不要介意使用或构造不良我是个新手。

感谢。

2 个答案:

答案 0 :(得分:0)

我认为应该是 -

DROP TRIGGER a_num;
DELIMITER //
CREATE TRIGGER a_num BEFORE INSERT ON test_a

FOR EACH ROW BEGIN
    DECLARE last INT DEFAULT 0;
    INSERT INTO test_b SET full_name = CONCAT_WS(' ', NEW.f_name, NEW.l_name);
    SET last = LAST_INSERT_ID();
    UPDATE test_b SET number = CONCAT_WS('-',  last, LEFT(NEW.f_name, 2), LEFT(NEW.f_name, 2)) WHERE id = last;
END;
//

答案 1 :(得分:0)

您能为test_a和您正在使用的INSERT语句提供CREATE语句吗?

在MySQL Workbench中,如果右键单击test_a,请转到Copy to Clipboard..Create Statement,将发送表定义。

您是否有理由插入然后更新同一记录?你能把它合并成一个插页吗?