0

在 mysql5 中实现触发器时,我可以传递我的 Coldfusion 应用程序中的任何会话值(如 userName、createdBy 等)。

创建触发用户_After_Insert
插入用户之后
每一行
插入审计日志(RequisitionID、ApplicantID、ColumnName、OldID、NewID、Description、CreatedBy、CreatedDate)
价值观
(0,0,'',0,0,CONCAT('用户 ID 为 ',new.UserID,' 的新用户已创建。'),
 session.userName, curdate()
);

在上面的查询中,我必须向 auditLog 表的“CreatedBy”列提供“session.userName”值,因为“CreatedBy”列不在“user”表中,这就是为什么我必须从 Coldfusion 会话中提供它。

如果有人可以帮助解决这个问题,我们将不胜感激。

谢谢尤格尔
_

4

1 回答 1

0

创建一个用户定义的变量并在您的触发器中使用这个变量:

CREATE TRIGGER Users_After_Insert
AFTER insert ON users
FOR EACH ROW
INSERT INTO auditlog (RequisitionID,ApplicantID,ColumnName,OldID,NewID,Description,CreatedBy,CreatedDate)
values
(0,0,'',0,0,CONCAT('New user with UserID ',new.UserID,' is created.'),
 @userName, curdate()
);

在执行 INSERT 之前,首先必须设置用户名:

SET @userName = 'Shooter';
INSERT INTO ...;

但是你为什么不为此使用存储过程呢?使用触发器,事情可能会出错,您可能会忘记设置变量。

于 2011-02-17T11:29:27.817 回答