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;