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