0

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

我已经尝试使用它来找出我做错了什么,但错误仍然是一样的。错误 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;
//

请不要介意我是新手的使用或结构不佳。

谢谢。

4

2 回答 2

0

I think it should be -

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;
//
于 2012-03-28T21:23:24.383 回答
0

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

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

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

于 2012-03-28T21:29:59.100 回答