MySQL – Auslöser zum Aktualisieren derselben Tabelle nach dem Einfügevorgang
P粉419164700
P粉419164700 2023-10-16 20:01:46
0
2
630

Das ist es, was ich versuche:

Wenn es ein Neues gibt 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 ;

erfordertnicht meine Operationneu eingefügte Spalte, sondern bereits vorhandeneSpalte, wobei pk = NEW.edit_onpk = NEW.edit_on

<

无法更新表 ACCOUNTS ... 已被调用此触发器的语句使用Allerdings kann ich nicht dieselbe Tabelle aktualisieren:

Tabelle KONTEN kann nicht aktualisiert werden ... bereits von der Anweisung verwendet, die diesen Auslöser aufgerufen hat

Bitte schlagen Sie eine Lösung vor
PS: Ich habe die Tabelle im Trigger nach dem Update für dieselbe Tabelle aktualisiert, den MySQL-Trigger in dieselbe Tabelle eingefügt, die gleiche Tabelle mit dem Trigger nach dem Einfügen aktualisiert und den MySQL-Trigger nach dem Einfügen in die Tabelle eingefügt und aktualisiert, aber sie scheinen meine Frage nicht zu beantworten .

Bearbeiten

ACCOUNTS

KONTEN
Tabelle:

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粉419164700
P粉419164700

Antworte allen(2)
P粉063862561

这就是我在插入时更新同一个表中的行的方法

activationCodeemail 是表 USER 中的行。 插入时,我没有指定 activationCode 的值,它将由 MySQL 动态创建。

username 更改为您的 MySQL 用户名,并将 db_name 更改为您的数据库名称。

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粉262113569

看来您无法在触发器中完成所有这些操作。根据文档

根据这个答案,看来你应该:

使用存储过程,您将手动提交更改(插入和更新)。我还没有在 MySQL 中这样做过,但是这篇文章看起来不错示例。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!