これが私がやろうとしていることです:
INSERTテーブルに新しいものがある場合、特定の(古い)アカウントが編集されたことを示すように設定して、 where =ACCOUNTSの行を更新する必要があります。ACCOUNTSpkNEW.edit_onstatus='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