Maison > Questions et réponses > le corps du texte
Voici ce que j'essaie de faire :
Quand il y en a un nouveau 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 ;
nécessitenon pas mon opérationune colonne nouvellement insérée, mais une colonnedéjà existante, où pk = NEW.edit_on
pk = NEW.edit_on
< /p>
无法更新表 ACCOUNTS ... 已被调用此触发器的语句使用
Cependant, je n'arrive pas à mettre à jour la même table :
Impossible de mettre à jour la table COMPTES... déjà utilisée par l'instruction qui a appelé ce déclencheur
Veuillez suggérer une solution
PS : j'ai effectué la mise à jour de la table dans le déclencheur après la mise à jour sur la même table, l'insertion dans la même table du déclencheur mysql, la mise à jour sur la même table en utilisant le déclencheur après l'insertion et l'insertion et la mise à jour du déclencheur mysql après l'insertion sur la table mais ils ne semblent pas répondre à ma question .
ModifierACCOUNTS
COMPTES
Tableau :
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
C'est ainsi que je mets à jour les lignes du même tableau lors de l'insertion
Lignes enactivationCode
和 email
是表 USER
.
Lors de l'insertion, je n'ai pas spécifié de valeur pour activationCode
, elle sera créée dynamiquement par MySQL.
Changez username
更改为您的 MySQL 用户名,并将 db_name
par le nom de votre base de données.
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
Il semble que vous ne puissiez pas faire tout cela avec un déclencheur. D'après Documentation :
D'après cette réponse, il semble que vous devriez :
Avec les procédures stockées, vous validerez les modifications (insertions et mises à jour) manuellement. Je ne l'ai pas encore fait dans MySQL, mais cet article semble être un bon exemple.