MySQL - Pencetus untuk mengemas kini jadual yang sama selepas operasi memasukkan
P粉419164700
P粉419164700 2023-10-16 20:01:46
0
2
589

Ini yang saya cuba lakukan:

Bila ada yang baruINSERT到表ACCOUNTS中时,我需要通过设置status='E'phpcnend 来更新ACCOUNTS中的行,其中pk=NEW.edit_oncphpcn 来表示特定(旧)帐户已被编辑。

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 ;

memerlukanbukanoperasi sayabaru dimasukkanlajur, tetapisudah adalajur, di manapk = NEW.edit_onpk = 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 .

Edit

ACCOUNTS

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

membalas semua (2)
P粉063862561

Beginilah cara saya mengemas kini baris dalam jadual yang sama pada sisipan

Garisan dalam

activationCodeemail是表USER. Semasa memasukkan, saya tidak menyatakan nilai untukactivationCode, ia akan dicipta secara dinamik oleh MySQL.

Tukarusername更改为您的 MySQL 用户名,并将db_namekepada 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粉262113569

    Nampaknya anda tidak boleh melakukan semua ini dalam satu pencetus. MengikutDokumentasi:

    Berdasarkanjawapan ini, nampaknya anda patut:

    Dengan prosedur tersimpan anda akan melakukan perubahan (sisipan dan kemas kini) secara manual. Saya belum melakukan ini dalam MySQL lagi, tetapiartikel inikelihatan seperti contoh yang baik.

      Muat turun terkini
      Lagi>
      kesan web
      Kod sumber laman web
      Bahan laman web
      Templat hujung hadapan
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!