Dalam mysql, pencetus ialah satu set pernyataan SQL yang disimpan dalam direktori pangkalan data yang dilaksanakan atau dinyalakan apabila peristiwa yang dikaitkan dengan jadual berlaku, seperti sisipan, kemas kini atau padam. Pencetus berkait rapat dengan jadual data dan digunakan terutamanya untuk melindungi data dalam jadual terutamanya apabila terdapat berbilang jadual dengan sambungan tertentu, pencetus boleh mengekalkan konsistensi data dalam jadual yang berbeza. Dalam MySQL, pencetus hanya boleh diaktifkan apabila melaksanakan operasi INSERT, UPDATE dan DELETE, dan pernyataan SQL lain tidak akan mengaktifkan pencetus.
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Pencetus dalam mysql
Dalam mysql, pencetus ialah set pernyataan SQL yang disimpan dalam direktori pangkalan data yang dicetuskan apabila pencetus dilaksanakan atau dipecat apabila peristiwa yang dikaitkan dengan jadual berlaku, seperti sisipan, kemas kini atau padam.
Pencetus MySQL, seperti prosedur tersimpan, ialah atur cara yang dibenamkan dalam MySQL dan merupakan alat berkuasa untuk pengurusan data dalam MySQL. Perbezaannya ialah pelaksanaan prosedur tersimpan memerlukan pernyataan CALL, manakala pelaksanaan pencetus tidak memerlukan pernyataan CALL atau permulaan manual Sebaliknya, ia dicetuskan dan diaktifkan melalui operasi yang berkaitan pada jadual data untuk mencapai pelaksanaan. Sebagai contoh, pelaksanaannya akan diaktifkan apabila operasi (INSERT, DELETE atau UPDATE) dilakukan pada meja pelajar.
Pencetus berkait rapat dengan jadual data dan digunakan terutamanya untuk melindungi data dalam jadual. Terutama apabila terdapat berbilang jadual yang berkaitan antara satu sama lain, pencetus boleh mengekalkan konsistensi data dalam jadual yang berbeza.
Dalam MySQL, pencetus hanya boleh diaktifkan apabila melaksanakan operasi INSERT, UPDATE dan DELETE, pernyataan SQL lain tidak akan mengaktifkan pencetus.
Jadi mengapa menggunakan pencetus? Sebagai contoh, apabila benar-benar membangunkan projek, kita sering menghadapi situasi berikut:
Apabila rekod tentang pelajar ditambahkan pada jadual pelajar, jumlah bilangan pelajar mesti berubah pada masa yang sama .
Apabila menambah rekod pelajar, anda perlu menyemak sama ada umur memenuhi keperluan julat.
Apabila memadamkan maklumat pelajar, anda perlu memadamkan rekod yang sepadan pada helaian skornya.
Apabila memadamkan sekeping data, anda perlu menyimpan salinan sandaran dalam jadual arkib pangkalan data.
Walaupun logik perniagaan yang dilaksanakan dalam situasi di atas adalah berbeza, mereka semua perlu melakukan beberapa pemprosesan secara automatik apabila jadual data berubah. Pada masa ini, pemprosesan pencetus boleh digunakan. Sebagai contoh, untuk kes pertama, anda boleh mencipta objek pencetus dan melakukan operasi untuk mengira jumlah bilangan pelajar setiap kali rekod pelajar ditambah Ini memastikan setiap kali rekod pelajar ditambah, jumlah bilangan pelajar dan bilangan rekod pelajar dikira adalah konsisten.
Pencetus disokong oleh MySQL
Dalam penggunaan sebenar, terdapat tiga pencetus yang disokong oleh MySQL: INSERT trigger, UPDATE trigger dan DELETE trigger.
1) INSERT pencetus
Pencetus yang bertindak balas sebelum atau selepas pernyataan INSERT dilaksanakan.
Anda perlu memberi perhatian kepada perkara berikut apabila menggunakan pencetus INSERT:
Dalam kod pencetus INSERT, anda boleh merujuk jadual maya bernama BARU (tidak sensitif huruf besar-besaran ) untuk mengakses baris yang dimasukkan.
Dalam pencetus SEBELUM INSERT, nilai dalam BARU juga boleh dikemas kini, yang membolehkan nilai yang dimasukkan ditukar (selagi ia mempunyai kebenaran operasi yang sepadan).
Untuk lajur AUTO_INCREMENT, BARU mengandungi nilai 0 sebelum INSERT dilaksanakan dan akan mengandungi nilai baharu yang dijana secara automatik selepas INSERT dilaksanakan.
2) KEMASKINI pencetus
Pencetus yang bertindak balas sebelum atau selepas pernyataan KEMASKINI dilaksanakan.
Apabila menggunakan pencetus KEMASKINI, anda perlu memberi perhatian kepada perkara berikut:
Dalam kod pencetus KEMASKINI, anda boleh merujuk jadual maya bernama BARU (kes- tidak sensitif) untuk mengakses nilai yang dikemas kini.
Dalam kod pencetus KEMASKINI, jadual maya bernama OLD (tidak sensitif huruf besar-besaran) boleh dirujuk untuk mengakses nilai sebelum pernyataan KEMASKINI dilaksanakan.
Dalam pencetus SEBELUM KEMASKINI, nilai dalam BARU juga boleh dikemas kini, yang membolehkan menukar nilai untuk digunakan dalam pernyataan KEMASKINI (selagi anda mempunyai kebenaran operasi yang sepadan) . Semua nilai dalam
LAMA adalah baca sahaja dan tidak boleh dikemas kini.
Nota: Apabila pencetus direka untuk mencetuskan operasi kemas kini jadual itu sendiri, hanya SEBELUM jenis pencetus boleh digunakan dan SELEPAS jenis pencetus tidak akan dibenarkan.
3) PADAM pencetus
Pencetus yang bertindak balas sebelum atau selepas penyataan DELETE dilaksanakan.
Apabila menggunakan pencetus DELETE, anda perlu memberi perhatian kepada perkara berikut:
Dalam kod pencetus DELETE, anda boleh merujuk jadual maya bernama OLD (kes- tidak sensitif) untuk mengakses baris yang dipadam. Semua nilai dalam
LAMA adalah baca sahaja dan tidak boleh dikemas kini.
Secara umumnya, semasa penggunaan pencetus, MySQL akan mengendalikan ralat dengan cara berikut.
Untuk jadual transaksi, jika program pencetus gagal, dan keseluruhan penyata yang terhasil gagal, maka semua perubahan yang dilakukan oleh penyata akan digulung semula untuk jadual bukan transaksi, pemulangan semula tersebut tidak boleh dilakukan, walaupun penyataan Gagal, sebarang perubahan yang dibuat sebelum kegagalan akan tetap berkesan.
Jika pencetus SEBELUM gagal, MySQL tidak akan melaksanakan operasi pada baris yang sepadan.
Jika ralat berlaku semasa pelaksanaan pencetus SEBELUM atau SELEPAS, ia akan menyebabkan keseluruhan pernyataan yang memanggil pencetus gagal.
MySQL akan melaksanakan pencetus SELEPAS hanya jika kedua-dua pencetus SEBELUM dan operasi baris telah berjaya dilaksanakan.
[Cadangan berkaitan: tutorial video mysql]
Atas ialah kandungan terperinci Apakah pencetus dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!