Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kesalahan MySql:Tidak dapat memperbarui tabel dalam fungsi/pemicu tersimpan karena sudah digunakan oleh pernyataan yang memanggil fungsi/pemicu tersimpan ini

Anda tidak dapat mengubah tabel saat pemicu INSERT diaktifkan. INSERT mungkin melakukan penguncian yang dapat mengakibatkan kebuntuan. Juga, memperbarui tabel dari pemicu kemudian akan menyebabkan pemicu yang sama menyala lagi dalam loop rekursif tak terbatas. Kedua alasan inilah mengapa MySQL mencegah Anda melakukan hal ini.

Namun, bergantung pada apa yang ingin Anda capai, Anda dapat mengakses nilai baru dengan menggunakan NEW.fieldname atau bahkan nilai lama--jika melakukan UPDATE--dengan OLD.

Jika Anda memiliki baris bernama full_brand_name dan Anda ingin menggunakan dua huruf pertama sebagai nama pendek di bidang small_name Anda dapat menggunakan:

CREATE TRIGGER `capital` BEFORE INSERT ON `brandnames`
FOR EACH ROW BEGIN
  SET NEW.short_name = CONCAT(UCASE(LEFT(NEW.full_name,1)) , LCASE(SUBSTRING(NEW.full_name,2)))
END


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan Python dan MySQL dalam Proses ETL:Menggunakan Python dan SQLAlchemy

  2. MySQL Trigger untuk mencegah INSERT dalam kondisi tertentu

  3. Mengapa MySQL melaporkan kesalahan sintaks pada FULL OUTER JOIN?

  4. Cara Membuat API GraphQL Tanpa Server untuk MySQL, Postgres, dan Aurora

  5. Pisahkan nilai dari satu bidang menjadi dua