更新后的Mysql触发器问题
我正在尝试为更新查询创建一个mysql触发器。在这里,我对用户更改使用单独的更新查询更新后的Mysql触发器问题,mysql,sql,triggers,Mysql,Sql,Triggers,我正在尝试为更新查询创建一个mysql触发器。在这里,我对用户更改使用单独的更新查询 1. personal details 2. address details 3. contact details 因此,我不需要创建一个触发器来用于所有上述更改 1. personal details 2. address details 3. contact details 我就是这样尝试的: CREATE TRIGGER log_change AFTER UPDATE ON users
1. personal details
2. address details
3. contact details
因此,我不需要创建一个触发器来用于所有上述更改
1. personal details
2. address details
3. contact details
我就是这样尝试的:
CREATE TRIGGER log_change
AFTER UPDATE ON users
FOR EACH ROW
INSERT INTO access_log (id,action,previous_data,current_data)
VALUES (
NEW.user_id,
CASE
WHEN (NEW.address <> OLD.address) OR
(NEW.city_id <> OLD.city_id)
THEN 'Beneficiary address details'
WHEN (NEW.email <> OLD.email) OR
(NEW.telephone <> OLD.telephone) OR
(NEW.mobile <> OLD.mobile)
THEN 'Beneficiary contact details'
ELSE 'Beneficiary personal details'
END,
CONCAT_WS("<br>\n"
, IF(OLD.title<>NEW.title, CONCAT('Title: ',OLD.title), NULL)
, IF(OLD.beneficiary_name<>NEW.name, CONCAT('Beneficiary Name: ', OLD.name), NULL)
, IF(OLD.gender<>NEW.gender, CONCAT('Gender: ',OLD.gender), NULL)
),
CONCAT_WS("<br>\n"
, IF(OLD.title<>NEW.title, CONCAT('Title: ',NEW.title), NULL)
, IF(OLD.beneficiary_name<>NEW.name, CONCAT('Beneficiary Name: ', NEW.name), NULL)
, IF(OLD.gender<>NEW.gender, CONCAT('Gender: ', NEW.gender), NULL)
),
CONCAT_WS(', ', OLD.address, OLD.city_id),
CONCAT_WS(', ', NEW.address, NEW.city_id)
);
创建触发器日志\u更改
用户更新后
每行
插入访问日志(id、操作、以前的\u数据、当前的\u数据)
价值观(
NEW.user\u id,
案例
何时(新地址旧地址)或
(NEW.city\u id OLD.city\u id)
然后是“受益人地址详情”
何时(NEW.email OLD.email)或
(新电话旧电话)或
(NEW.mobile.OLD.mobile)
然后是“受益人联系方式”
其他“受益人个人详细信息”
完,,
CONCAT_WS(“
\n”
,IF(OLD.titleNEW.title,CONCAT('title:',OLD.title),NULL)
,IF(OLD.受益人名称new.name,CONCAT('受益人名称:',OLD.name),NULL)
,IF(OLD.genderNEW.gender,CONCAT('gender:',OLD.gender),NULL)
),
CONCAT_WS(“
\n”
,IF(OLD.titleNEW.title,CONCAT('title:',NEW.title),NULL)
,IF(OLD.受益人名称NEW.name,CONCAT('受益人名称:',NEW.name),NULL)
,IF(OLD.genderNEW.gender,CONCAT('gender:',NEW.gender),NULL)
),
CONCAT_WS(',',OLD.address,OLD.city_id),
CONCAT_WS(',',NEW.address,NEW.city_id)
);
我的问题是触发器正在创建,但inser查询不起作用。这意味着在运行更新查询后,数据不会插入到access\u log
表中
希望有人能帮助我
INSERT INTO access_log (id,action,previous_data,current_data)
此行包含4个字段
下面你提供了6个我想你的列数是4对6。所以在这4列中,阻塞这6列。如果是这样,我在创建(事件)时没有出现语法错误。但是触发器会悄无声息地消失,而且,毕竟没有用户界面。@Drew,我无法理解你提到的内容。你能举个例子详细说明一下吗。谢谢,我可以用你的。列列表有4列:
(id、操作、以前的\u数据、当前的\u数据)
。但是您提供的数据是6列:(1)一个id,(2)一个case/when块,然后是3 4 5 6个concat。我不确定如何提供6列。它有4列。你能告诉我我提供的6个栏目是什么吗?非常感谢。