mysql触发器-如何在插入后添加记录id
我有一个记录表:mysql触发器-如何在插入后添加记录id,mysql,triggers,Mysql,Triggers,我有一个记录表: mysql> desc MyLog; +-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | Aud_
mysql> desc MyLog;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| Aud_ID | int(11) | NO | PRI | NULL | auto_increment |
| Rec_ID | int(11) | NO | | NULL | |
| AudObj | varchar(255) | NO | | NULL | |
| User_ID | varchar(255) | NO | | NULL | |
| AudType | varchar(15) | NO | | NULL | |
| ChangedOn | datetime | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
我有一个“插入后”的触发器:
在“插入后”中,当我们向表中添加一条新记录时,我的记录ID(直到添加=0时才存在),但在添加后,我希望捕获该“新”记录ID并将其插入表中。我可以在同一触发器中执行此操作吗
以下是我的输出:
mysql> select * from MyLog;
+----------+-----------+-------------+---------+-----------+---------------------+
| Aud_ID | Rec_ID | AudObj | User_ID | AudType | ChangedOn |
+----------+-----------+-------------+---------+-----------+---------------------+
| 1003 | 0 | Images | 445 | ADDED | 2014-10-28 09:09:42 |
+----------+-----------+-------------+---------+-----------+---------------------+
以下是我想要的输出:
+----------+-----------+-------------+---------+-----------+---------------------+
| Aud_ID | Rec_ID | AudObj | User_ID | AudType | ChangedOn |
+----------+-----------+-------------+---------+-----------+---------------------+
| 1003 | 0 | Images | 445 | ADDED | 2014-10-28 09:09:42 |
| 1004 | 22| Images | 445 | NEWREC_ID | 2014-10-28 09:09:42 |
+----------+-----------+-------------+---------+-----------+---------------------+
如有任何建议,将不胜感激 你应该能够用你正在尝试的方式来做这件事。只需使用
INSERT INTO TABLE\u NAME.修改触发器主体,如下所示。。值
构造
CREATE TRIGGER after_Images_add
AFTER INSERT ON Images_TST
FOR EACH ROW
BEGIN
INSERT INTO MyLog(Rec_ID, AudType, AudObj, User_ID, changedon)
VALUES(NEW.Image_ID, 'ADDED', 'Images', NEW.employee_ID, NOW());
END;
不知怎的,我在使用这个函数时遇到了语法错误。@oramel,请参阅编辑后的答案。那以前是不正确的。谢谢你的帮助。我得到了用你的构造创建的语法。然而,我仍然处于同样的困境,我的
rec\u id=0
使用LAST\u INSERT\u id()。我在回答中纠正了一个小错误。在触发器中,您正在执行插入AuditLog
,但您正在尝试执行从MyLog中选择*
。那是两张不同的桌子。另外,不要使用LAST\u INSERT\u ID()
。那是不对的。使用我编辑的答案中的代码,它应该可以正常工作。
CREATE TRIGGER after_Images_add
AFTER INSERT ON Images_TST
FOR EACH ROW
BEGIN
INSERT INTO MyLog(Rec_ID, AudType, AudObj, User_ID, changedon)
VALUES(NEW.Image_ID, 'ADDED', 'Images', NEW.employee_ID, NOW());
END;