我们如何在mysql5中为触发器提供coldfusion的会话值?

时间:2011-02-17 08:55:07

标签: mysql triggers coldfusion-8

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

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.'),
 session.userName, curdate()
);

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

如果有人可以帮助解决这个问题,那将非常感激。

感谢
Yugal

1 个答案:

答案 0 :(得分:0)

创建一个user defined variable并在触发器中使用这个:

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 ...;

但为什么不为此使用stored procedure?有了触发器,事情就会出错,你可能会忘记设置变量。