這就是我正在嘗試做的事情:
當有一個新的INSERT
到表格ACCOUNTS
中時,我需要透過設定status='E'phpcnend 來更新
ACCOUNTS
中的行,其中pk
= NEW.edit_on
cphpcn 來表示特定(舊)帳戶已被編輯。
#
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
< ; /p>
但是,我無法更新同一個表格:無法更新表格 ACCOUNTS ... 已被呼叫此觸發器的語句使用
#
請提出解決方法
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
這就是我在插入時更新同一個表中的行的方法
activationCode
和email
是表格USER
中的行。 插入時,我沒有指定activationCode
的值,它將由 MySQL 動態建立。將
username
變更為您的 MySQL 使用者名,並將db_name
變更為您的資料庫名稱。看來您無法在觸發器中完成所有這些操作。根據文檔:
根據這個答案,看來你應該:
使用預存程序,您將手動提交變更(插入和更新)。我還沒有在 MySQL 中這樣做過,但這篇文章看起來不錯範例。