【发布时间】:2016-12-05 14:59:11
【问题描述】:
DELIMITER $$
CREATE TRIGGER `tr_tblEmployee_Update` BEFORE UPDATE ON `tblEmployee` FOR EACH ROW
BEGIN
DECLARE id int; DECLARE OldGender varchar(10); DECLARE NewGender varchar(10); DECLARE NewName varchar(50); DECLARE OldName varchar(50);
DECLARE OldSalary int; DECLARE NewSalary int; DECLARE OldID_Dep int; DECLARE NewId_Dep int;
DECLARE AuditString varchar(300);
SET id = ID_Employee; SET NewGender = Gender; SET NewName = Name; SET NewSalary = Salary; SET NewID_Dep = ID_Dep;
SET OldGender = Gender; SET OldName = Name; SET OldSalary = Salary; SET OldID_Dep = ID_Dep;
SET AuditString = concat('Employee with id = ',id,' changed: ')
IF(OldName<>NewName)
SET AuditString = concat(AuditString, 'Name from ',OldName,' to ',NewName);
IF(OldGender<>NewGender)
SET AuditString = concat(AuditString, ' Gender from ',OldGender,' to ',NewGender);
IF(OldSalary<>NewSalary)
SET AuditString = concat(AuditString, ' Salary from ',OldName,' to ',NewName);
IF(OldDep<>NewDep)
SET AuditString = concat(AuditString, ' Department from ',OldName,' to ',NewName);
INSERT INTO tblemployeeaudit(AuditData) VALUES(AuditString);
END
$$
DELIMITER ;
您好,我想多次使用具有相同变量 (AuditString) 的 concat 函数,但每次尝试执行此操作时都会出错。
错误 - #1064 - 您的 SQL 语法有错误;检查手册 对应于正确语法的 MariaDB 服务器版本 在 'IF(OldName!=NewName) 附近使用 SET AuditString = concat(AuditString, 'Name from ',Ol'... at line 12
【问题讨论】:
-
您使用的是 MySQL 还是 MS SQL Server? (不要标记未涉及的产品。)
-
也发布错误信息
-
我正在使用MySql,抱歉我第一次在这里发帖。
标签: mysql