mysql错误1442触发器
我有以下触发因素:mysql错误1442触发器,mysql,triggers,Mysql,Triggers,我有以下触发因素: CREATE DEFINER=root@localhost TRIGGER after_insert_student AFTER INSERT ON students FOR EACH ROW BEGIN SET @cateID := NEW.ID ; IF @cateID IS NOT NULL THEN SELECT right(max(id), 3) INTO @firstid FROM students LIMIT 1; S
CREATE DEFINER=root@localhost TRIGGER after_insert_student AFTER INSERT ON
students FOR EACH ROW BEGIN
SET @cateID := NEW.ID ;
IF @cateID IS NOT NULL THEN
SELECT right(max(id), 3) INTO @firstid FROM students LIMIT 1;
SET @IDFOR = @firstid+1;
SET @DATEID = DATE_FORMAT(NOW(),'%y%d%m');
INSERT INTO students (CONCAT(@DATEID, @IDFOR), DATENEW)
VALUES(@IDFOR, NOW() );
END IF;
END
错误:
错误1442:1442:无法更新存储中的表“students”
函数/触发器,因为调用
此存储函数/触发器
是因为您实际上是在插入前触发器上执行插入操作吗 你不想让引发插入的事件来决定它吗 您将根据刚才插入到同一个表中的学生插入另一个学生
尝试在插入后用
重写,并更新刚创建的记录。错误消息显示全部:触发器在students表上插入事件之前处理事件,并尝试从触发器将新记录插入students表。这将再次触发这个触发器,它将在同一个表中插入另一行。。。我可以继续吗
将其更改为after insert触发器或使用新的.fieldname=。。。语法您可以修改插入的值。您不能更新调用触发器的表(学生):
在存储的函数或触发器中,不允许修改
已被用户(用于读或写)使用的表
调用函数或触发器的语句
这样做将生成错误1442:
Error Code: 1442
Can't update table 'MyTable' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
如果您只需要根据同一表格或其他表格中以前的条目设置字段值(使用选择)。您可以在插入学生前使用
触发器,这样您可以使用NEW
操作符设置/更新/编辑字段值 您可以将一个before insert触发器命名为“after_insert_student”。您需要学习如何编写合理的代码。此外,错误语句没有意义,因为代码没有引用名为news
的表。而且,代码本身也被破坏了。