Rumah > Soal Jawab > teks badan
Ini yang saya cuba lakukan:
Bila ada yang baru 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 ;
memerlukanbukan operasi sayabaru dimasukkan lajur, tetapi sudah adalajur, di mana pk = NEW.edit_on
pk = BARU.edit_on
<
无法更新表 ACCOUNTS ... 已被调用此触发器的语句使用
Walau bagaimanapun, saya tidak boleh mengemas kini jadual yang sama:
Tidak boleh mengemas kini AKAUN jadual ... sudah digunakan oleh pernyataan yang memanggil pencetus ini
Sila cadangkan penyelesaian
PS: Saya telah melakukan jadual kemas kini dalam pencetus selepas kemas kini pada jadual yang sama, masukkan ke dalam jadual yang sama pencetus mysql, kemas kini pada jadual yang sama menggunakan pencetus selepas sisip dan masukkan dan kemas kini pencetus mysql selepas sisipan di atas meja tetapi mereka nampaknya tidak menjawab soalan saya .
EditACCOUNTS
AKAUN
Jadual:
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
🎜🎜🎜P粉0638625612023-10-17 18:44:15
Beginilah cara saya mengemas kini baris dalam jadual yang sama pada sisipan
Garisan dalamactivationCode
和 email
是表 USER
.
Semasa memasukkan, saya tidak menyatakan nilai untuk activationCode
, ia akan dicipta secara dinamik oleh MySQL.
Tukar username
更改为您的 MySQL 用户名,并将 db_name
kepada nama pangkalan data anda.
CREATE DEFINER=`username`@`localhost` TRIGGER `db_name`.`user_BEFORE_INSERT` BEFORE INSERT ON `user` FOR EACH ROW BEGIN SET new.activationCode = MD5(new.email); END
P粉2621135692023-10-17 17:55:58
Nampaknya anda tidak boleh melakukan semua ini dalam satu pencetus. Mengikut Dokumentasi:
Berdasarkan jawapan ini, nampaknya anda patut:
Dengan prosedur tersimpan anda akan melakukan perubahan (sisipan dan kemas kini) secara manual. Saya belum melakukan ini dalam MySQL lagi, tetapi artikel ini kelihatan seperti contoh yang baik.