这是我正在尝试做的事情:
INSERT
当表格中有新内容时ACCOUNTS
,我需要通过设置来更新ACCOUNTS
where pk
=中的行,以表示特定(旧)帐户已被编辑。NEW.edit_on
status='E'
DELIMITER $$
DROP TRIGGER IF EXISTS `setEditStatus`$$
CREATE TRIGGER `setEditStatus` AFTER INSERT on ACCOUNTS
FOR EACH ROW BEGIN
update ACCOUNTS set status='E' where ACCOUNTS.pk = NEW.edit_on ;
END$$
DELIMITER ;
要求不是我操纵新插入的列,而是一个已经存在的列pk = NEW.edit_on
但是,我无法更新同一张表:Can't update table ACCOUNTS ... already used by the statement that invoked this trigger
请提出解决方法
PS:我已经在同一张表上更新后在触发器中更新表,插入到同一张表中触发mysql,在同一张表上使用插入触发器后更新,在表上插入后使用插入和更新的mysql触发器,但他们似乎没有回答我的问题。
编辑
ACCOUNTS
桌子:
CREATE TABLE `ACCOUNTS` (
`pk` bigint(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` bigint(9) unsigned NOT NULL,
`edit_on` bigint(10) unsigned DEFAULT NULL,
`status` varchar(1) NOT NULL DEFAULT 'A',
PRIMARY KEY (`pk`) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=2147483726 DEFAULT CHARSET=latin1