Pengenalan kepada MariaDB dan MySQL Pencetus
- 3453
- 1016
- Dana Hammes
Objektif
Memahami dan belajar menggunakan pencetus MariaDB dan MySQL.
Keperluan
- Tiada keperluan tertentu diperlukan
Konvensyen
- # - Memerlukan arahan Linux yang diberikan dengan keistimewaan akar sama ada
secara langsung sebagai pengguna akar atau dengan menggunakansudo
perintah - $ - Memandangkan perintah Linux dilaksanakan sebagai pengguna yang tidak berkepala biasa
Pengenalan
MySQL/MariaDB pencetus
program tersimpan yang dikaitkan dengan jadual dalam pangkalan data, dan digunakan untuk melakukan beberapa tindakan secara automatik apabila Masukkan
, Padam
atau Kemas kini
Acara dilakukan di atas meja. Pencetus boleh ditetapkan untuk melakukan tindakan sama ada sebelum atau selepas peristiwa
ia dikaitkan dengan. Dalam tutorial ini, kita akan melihat cara membuat dan menguruskan pencetus.
Pangkalan data ujian
Demi tutorial ini, kami akan membuat pangkalan data dengan hanya satu dan jadual yang sangat mudah, dengan senarai buku dan genre masing -masing. Mari Teruskan:
MariaDB [(Tiada)]> Buat Book_test Pangkalan Data; Mariadb [(Tiada)]> Buat Book_test Jadual.buku ( -> id smallint (1) unsigned not null auto_increment, -> name varchar (25) not null, -> genre varchar (25) not null, -> primer kekunci (id));
Salinan Kami mencipta jadual remeh kami, sekarang kami harus mengasingkannya dengan beberapa buku. Berikut adalah beberapa kegemaran saya:
MariaDB [(Tiada)]> Gunakan Book_test; MariaDB [book_test]> masukkan ke dalam buku (nama, genre) nilai -> ('1984', 'dystopian'), -> ('The Lord of the Rings', 'Fantasy'), -> ('Pada Genealogi Moral ',' falsafah ');
Salinan Itu cukup untuk contoh kami. Berikut adalah perwakilan visual jadual kami:
+----+---------------------------+------------+ | id | Nama | Genre | +----+---------------------------+------------+| 1 | 1984 | Dystopian | | 2 | Tuan Cincin | Fantasy | | 3 | Pada Genealogi Moral | Falsafah | +----+---------------------------+------------+
Salinan Sekarang kami menyediakan jadual ujian kami, kami dapat melihat cara membuat dan mengaitkan a Pencetus
kepadanya.
Buat pencetus
Seperti yang dikatakan sebelum ini, dengan mencipta pencetus, kita boleh membiarkan pangkalan data kami secara automatik melakukan tindakan tertentu setiap kali peristiwa yang ditentukan, yang boleh menjadi antara Masukkan
, Kemas kini
atau Padam
, dilakukan di atas meja. Katakanlah, sebagai contoh, untuk alasan yang aneh, kami tidak mahu membenarkan lebih daripada satu buku falsafah dalam koleksi kami, bagaimana kami dapat menguatkuasakan peraturan ini? Walaupun sekatan dapat dilaksanakan pada tahap yang lebih tinggi, kami dapat menetapkannya secara langsung dalam pangkalan data, menggunakan pencetus. Sintaks untuk membuatnya sangat mudah:
Buat Trigger Trigger_name # Berikan nama kepada pencetus sebelum | Selepas # ditetapkan apabila pencetus harus dilaksanakan Insert | Padam | UPDATE # Tetapkan pernyataan yang dikaitkan dengan pencetus pada table_name # Tetapkan jadual yang dikaitkan dengan pencetus untuk setiap baris trigger_stmt # mengisytiharkan badan pencetus
Salinan Berikutan sintaks di atas, kita boleh mencipta pencetus kita:
MariaDB [book_test]> Delimiter $ Mariadb [book_test]> Buat Trigger No_more_philosophy Sebelum Masukkan pada Book_test.buku -> untuk setiap baris bermula -> jika baru.genre = "falsafah" dan (pilih kiraan (*) dari book_test.buku di mana genre = "falsafah")> 0 kemudian -> isyarat sqlstate '45000' set message_text = 'hanya satu buku falsafah dibenarkan!'; -> akhir jika; -> end $ Mariadb [book_test]> Delimiter;
Salinan Perkara pertama yang telah kami lakukan dalam baris 1, adalah untuk mengarahkan pangkalan data untuk menggunakan $
watak sebagai pembatas pernyataan dan bukannya lalai ;
. Ini kerana pembatas titik koma akan digunakan di dalam badan pencetus.
Kami kemudian mencipta pencetus menggunakan Buat pencetus
pernyataan dalam baris 2, diikuti oleh nama
Kami mahu menyerahkannya: "No_more_philosophy" dalam kes ini. Selepas itu, kami menyatakan bahawa pencetus harus dilaksanakan Sebelumnya
The Masukkan
penyata. Sejurus selepas itu, kami mengaitkan pencetus dengan jadual "Buku".
Badan pencetus bermula dengan Untuk setiap baris
Dalam Baris 3: Kami menggunakan Mulakan
Untuk menandakan permulaan pernyataan kompaun kami, yang harus dilaksanakan apabila pencetus dipanggil, dan kami menandakan berakhirnya dengan Akhir
, Sama seperti kita lakukan dengan prosedur lain.
Sebaik sahaja pencetus dikaitkan dengan jadual ia akan dijalankan sebelum setiap penyisipan baris dilakukan.
Apabila pencetus dilakukan, dua pseudorecords
dihuni: TUA
dan BARU
: Nilai yang diberikan kepada mereka berbeza -beza bergantung pada jenis acara. Untuk Masukkan
pernyataan, sejak baris baru, TUA
pseudorecord tidak akan mengandungi nilai, sementara BARU
akan mengandungi nilai baris baru yang harus dimasukkan. Sebaliknya akan berlaku untuk a Padam
pernyataan: lama akan mengandungi nilai lama, dan baru akan kosong. Akhirnya untuk Kemas kini
pernyataan, kedua -duanya akan dihuni, sejak lama akan mengandungi nilai lama baris, sementara baru akan mengandungi yang baru.
Pencetus kami dalam baris 4 akan memeriksa nilai genre
lajur untuk baris baru (dikenal pasti oleh BARU
): Jika ia ditetapkan untuk "falsafah", ia akan menanyakan buku dengan genre 'falsafah', dan periksa sama ada sekurang -kurangnya satu sudah ada. Sekiranya berlaku, ia akan menimbulkan pengecualian dengan mesej 'Hanya satu buku falsafah yang dibenarkan!'.
Sebagai perkara terakhir dalam baris 8, kami menetapkan pembatas kembali ke ;
.
Pencetus kita dalam tindakan
Mari kita periksa pencetus kami dalam tindakan: Kami akan cuba memasukkan buku baru dengan genre "falsafah" dan melihat apa yang berlaku:
Mariadb [book_test]> masukkan ke dalam buku (nama, genre) nilai ('Republik', 'Falsafah'); Ralat 1644 (45000): Hanya satu buku falsafah yang dibenarkan!
Salinan Seperti yang anda lihat, pencetus bekerja, dan pelayan membalas dengan mesej ralat yang kami tetapkan ketika kami cuba menambah buku falsafah lain ke koleksi kami.
Mengurus pencetus
Untuk memeriksa pencetus dalam pangkalan data, yang perlu kita lakukan ialah menjalankan Tunjukkan pencetus
Perintah:
Mariadb [book_test]> menunjukkan pencetus \ g; ******************************* 1. baris ***************************** pencetus: no_more_philosophy event: sisipkan jadual: pernyataan buku: mulakan jika baru.genre = "falsafah" dan (pilih kiraan (*) dari book_test.buku di mana genre = "falsafah")> 0 maka isyarat sqlstate '45000' set message_text = 'hanya satu buku falsafah dibenarkan!'; Akhir jika; Masa Akhir: Sebelum Dibuat: NULL SQL_MODE: NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITURI
Salinan Menjatuhkan pencetus itu sama mudahnya: yang perlu kita lakukan adalah merujuk pencetus dengan namanya. Sebagai contoh, jika kita ingin mengeluarkan pencetus "no_more_philosophy", kita harus menjalankan:
Mariadb [book_test]> drop trigger no_more_philosophy;
Jika kita tahu menanyakan pangkalan data untuk pencetus sedia ada, kita menerima set kosong:
Mariadb [book_test]> menunjukkan pencetus; Set kosong (0.01 saat)
Kesimpulan
Dalam tutorial ini kita belajar apa yang dicetuskan, dan sintaks yang harus digunakan untuk mencipta satu. Kami juga mencipta jadual remeh, dan mengaitkan pencetus dengannya, melihat bagaimana ia dapat digunakan untuk memastikan peraturan tertentu. Akhirnya kita melihat bagaimana kita dapat memeriksa pencetus yang ada dalam pangkalan data, dan bagaimana kita dapat memadamkannya. Walaupun ini cukup untuk memulakan anda, anda boleh menyemak dokumentasi MariaDB/MySQL rasmi untuk pengetahuan yang lebih mendalam.
Tutorial Linux Berkaitan:
- Perkara yang hendak dipasang di Ubuntu 20.04
- Pengenalan kepada Automasi, Alat dan Teknik Linux
- Pasang mysql di Ubuntu 20.04 LTS Linux
- Menguasai Gelung Skrip Bash
- Cara Memasang MySQL di Almalinux
- Ubuntu 20.04 WordPress dengan pemasangan Apache
- Pemasangan WordPress OpenLiteSpeed
- Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
- Pemasangan ampache raspberry pi
- Ubuntu 20.04: WordPress dengan pemasangan nginx
- « Cara Menggabungkan Keputusan Pelbagai Pertanyaan SQL Menggunakan Pernyataan Kesatuan
- Cara membuat siap sedia dengan PostgreSQL »