国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

MySQL - 插入操作后更新同一個(gè)表的觸發(fā)器
P粉419164700
P粉419164700 2023-10-16 20:01:46
0
2
853

這就是我正在嘗試做的事情:

當(dāng)有一個(gè)新的 INSERT 到表 ACCOUNTS 中時(shí),我需要通過設(shè)置 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 ;

要求不是我操作新插入的列,而是已經(jīng)存在的列,其中 pk = NEW.edit_on< /p>

但是,我無法更新同一個(gè)表:無法更新表 ACCOUNTS ... 已被調(diào)用此觸發(fā)器的語句使用

請(qǐng)?zhí)岢鼋鉀Q方法

PS:我已經(jīng)完成了在同一個(gè)表上更新后在觸發(fā)器中更新表、插入同一個(gè)表觸發(fā)器mysql、在同一個(gè)表上使用插入后觸發(fā)器更新以及在表上插入后插入和更新mysql觸發(fā)器,但它們沒有似乎回答了我的問題。


編輯

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


P粉419164700
P粉419164700

全部回復(fù)(2)
P粉063862561

這就是我在插入時(shí)更新同一個(gè)表中的行的方法

activationCodeemail 是表 USER 中的行。 插入時(shí),我沒有指定 activationCode 的值,它將由 MySQL 動(dòng)態(tài)創(chuàng)建。

username 更改為您的 MySQL 用戶名,并將 db_name 更改為您的數(shù)據(jù)庫名稱。

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

看來您無法在觸發(fā)器中完成所有這些操作。根據(jù)文檔

根據(jù)這個(gè)答案,看來你應(yīng)該:

使用存儲(chǔ)過程,您將手動(dòng)提交更改(插入和更新)。我還沒有在 MySQL 中這樣做過,但是這篇文章看起來不錯(cuò)示例。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板