在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
答案 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?有了触发器,事情就会出错,你可能会忘记设置变量。