Pengantar pemicu mariadb dan mysql

Pengantar pemicu mariadb dan mysql

Objektif

Memahami dan belajar menggunakan mariadb dan pemicu mysql.

Persyaratan

  • Tidak ada persyaratan khusus yang diperlukan

Konvensi

  • # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root
    langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
  • $ - Diberikan perintah linux untuk dieksekusi sebagai pengguna biasa

Perkenalan

Mysql/mariadb pemicu adalah program tersimpan yang terkait dengan tabel dalam database, dan digunakan untuk secara otomatis melakukan beberapa tindakan saat MENYISIPKAN, MENGHAPUS atau MEMPERBARUI Acara dilakukan di atas meja. Pemicu dapat diatur untuk melakukan tindakan baik sebelum atau sesudah peristiwa itu terkait dengan. Dalam tutorial ini, kita akan melihat cara membuat dan mengelola pemicu.

Database pengujian

Demi tutorial ini, kami akan membuat database hanya dengan satu dan tabel yang sangat sederhana, dengan daftar buku dan genre masing -masing. Mari kita lanjutkan:

Mariadb [(tidak ada)]> buat basis data book_test; Mariadb [(tidak ada)]> buat tabel book_test.Buku ( -> id Smallint (1) Unsigned not null auto_increment, -> name varchar (25) not null, -> genre varchar (25) not null, -> primary key (id)); 
Menyalin

Kami membuat meja sepele kami, sekarang kami harus mengisinya dengan beberapa buku. Berikut beberapa favorit saya:

Mariadb [(tidak ada)]> Gunakan book_test; Mariadb [book_test]> masukkan ke dalam buku (nama, genre) nilai -> ('1984', 'dystopian'), -> ('The Lord of the Rings', 'Fantasy'), -> ('pada silsilah The Genealogy of of Moralitas ',' filsafat '); 
Menyalin

Itu cukup untuk contoh kami. Berikut adalah representasi visual dari tabel kami:

+----+---------------------------+------------+ | ID | Nama | Genre | +----+---------------------------+------------+| 1 | 1984 | Dystopian | | 2 | The Lord of the Rings | Fantasi | | 3 | Tentang Silsilah Moral | Filsafat | +----+---------------------------+------------+ 
Menyalin

Sekarang kami menyiapkan tabel uji kami, kami dapat melihat cara membuat dan mengaitkan a pemicu untuk itu.

Buat pemicu

Seperti yang dikatakan sebelumnya, dengan membuat pemicu, kami dapat membiarkan database kami secara otomatis melakukan tindakan tertentu setiap kali peristiwa yang ditentukan, yang dapat menjadi salah satu di antara MENYISIPKAN, MEMPERBARUI atau MENGHAPUS, dilakukan di atas meja. Katakanlah, misalnya, bahwa untuk beberapa alasan aneh, kami tidak ingin mengizinkan lebih dari satu buku filosofi dalam koleksi kami, bagaimana kami dapat menegakkan aturan ini? Saat pembatasan dapat diimplementasikan pada tingkat yang lebih tinggi, kami dapat mengaturnya langsung di database, menggunakan pemicu. Sintaks untuk membuatnya sangat mudah:

Buat Trigger Trigger_name # Tetapkan nama ke pemicu sebelum | Setelah # set saat pemicu harus dieksekusi insert | Hapus | UPDATE # Atur pernyataan yang terkait dengan pemicu pada Table_name # Setel tabel yang terkait dengan pemicu untuk setiap baris trigger_stmt # Deklarasikan Badan Pemicu 
Menyalin

Mengikuti sintaks di atas, kita dapat membuat pemicu kita:

Mariadb [book_test]> pembatas $ mariadb [book_test]> buat pemicu no_more_philosophy sebelum dimasukkan pada book_test.buku -> untuk setiap baris mulai -> jika baru.genre = "filsafat" dan (pilih hitungan (*) dari book_test.Buku di mana genre = "filsafat")> 0 lalu -> sinyal sqlstate '45000' Set message_text = 'Hanya satu buku filsafat yang diizinkan!'; -> Akhiri jika; -> end $ mariadb [book_test]> pembatas; 
Menyalin

Hal pertama yang telah kami lakukan di baris 1, adalah menginstruksikan database untuk menggunakan $ karakter sebagai pembatas pernyataan alih -alih default ;. Ini karena pembatas titik koma akan digunakan di dalam bodi pemicu.

Kami kemudian membuat pemicu menggunakan Buat pemicu pernyataan di baris 2, diikuti oleh nama Kami ingin menetapkannya: "no_more_philosophy" dalam kasus ini. Setelah itu, kami menetapkan bahwa pemicu harus dieksekusi SEBELUM itu MENYISIPKAN penyataan. Segera setelah itu, kami mengaitkan pemicu dengan tabel "buku".

Tubuh pemicu dimulai Untuk setiap baris di baris 3: kami menggunakan MULAI Untuk menandai awal pernyataan majemuk kami, yang harus dieksekusi ketika pemicu dipanggil, dan kami menandai ujungnya dengan AKHIR, seperti yang kita lakukan dengan prosedur lain.

Setelah pemicu dikaitkan dengan tabel yang akan dijalankan sebelum setiap penyisipan baris dilakukan.

Saat pemicu dilakukan, dua Pseudorecords diisi: TUA Dan BARU: Nilai yang ditetapkan untuk mereka bervariasi tergantung pada jenis acara. Untuk sebuah MENYISIPKAN pernyataan, karena baris itu baru, TUA Pseudorecord tidak akan mengandung nilai, sementara BARU akan berisi nilai -nilai baris baru yang harus dimasukkan. Sebaliknya akan terjadi untuk a MENGHAPUS Pernyataan: Lama akan berisi nilai -nilai lama, dan baru akan kosong. Akhirnya untuk MEMPERBARUI pernyataan, keduanya akan diisi, karena lama akan berisi nilai -nilai lama dari baris, sedangkan baru akan berisi yang baru.

Pemicu kami di baris 4 akan memeriksa nilai genre kolom untuk baris baru (diidentifikasi oleh BARU): Jika diatur ke "Filsafat", itu akan meminta buku dengan genre 'filsafat', dan periksa apakah setidaknya ada yang sudah ada. Jika itu masalahnya, itu akan meningkatkan pengecualian dengan pesan 'Hanya satu buku filsafat yang diizinkan!'.

Sebagai hal terakhir di baris 8, kami mengatur pembatas kembali ;.

Pemicu kami sedang beraksi

Mari kita periksa pemicu kami dalam tindakan: kami akan mencoba memasukkan buku baru dengan genre "filsafat" dan melihat apa yang terjadi:

Mariadb [book_test]> masukkan ke dalam buku (nama, genre) nilai ('republik', 'filsafat'); Kesalahan 1644 (45000): Hanya satu buku filsafat yang diizinkan! 
Menyalin

Seperti yang Anda lihat, pemicunya berhasil, dan server merespons dengan pesan kesalahan yang kami tetapkan ketika kami mencoba menambahkan buku filosofi lain ke koleksi kami.



Kelola pemicu

Untuk memeriksa pemicu dalam database, yang harus kami lakukan adalah menjalankan Tunjukkan pemicu memerintah:

Mariadb [book_test]> show pemicu \ g; *************************** 1. Baris ***************************** Pemicu: no_more_philosophy Acara: Masukkan Tabel: Pernyataan Buku: Mulai jika baru.genre = "filsafat" dan (pilih hitungan (*) dari book_test.Buku di mana genre = "filsafat")> 0 lalu sinyal sqlstate '45000' Set message_text = 'Hanya satu buku filsafat yang diizinkan!'; BERAKHIR JIKA; Timing Akhir: Sebelum Dibuat: NULL SQL_MODE: no_auto_create_user, no_engine_substitution Definer: root@localhost karakter_set_client: latin1 collation_connection: latin1_swedish_ci basis data Collation: latin1_swedish_ciedish 
Menyalin

Menjatuhkan pemicu itu sama mudahnya: yang harus kita lakukan adalah merujuk pemicu dengan namanya. Misalnya, jika kita ingin menghapus pemicu "no_more_philosophy", kita harus menjalankan:

Mariadb [book_test]> drop trigger no_more_philosophy;

Jika kita tahu permintaan database untuk pemicu yang ada, kami menerima set kosong:

Mariadb [book_test]> show pemicu; Set kosong (0.01 detik) 

Kesimpulan

Dalam tutorial ini kami belajar apa itu pemicu, dan sintaks yang harus digunakan untuk membuatnya. Kami juga membuat tabel sepele, dan menghubungkan pemicu dengannya, melihat bagaimana itu dapat digunakan untuk memastikan aturan tertentu. Akhirnya kami melihat bagaimana kami dapat memeriksa pemicu yang ada dalam database, dan bagaimana kami dapat menghapus satu. Meskipun ini sudah cukup untuk memulai, Anda dapat memeriksa dokumentasi resmi Mariadb/MySQL untuk pengetahuan yang lebih mendalam.

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Instal MySQL di Ubuntu 20.04 LTS Linux
  • Menguasai loop skrip bash
  • Cara menginstal mysql di almalinux
  • Ubuntu 20.04 WordPress dengan Instalasi Apache
  • Instalasi OpenLitespeed WordPress
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Instalasi ampache raspberry pi
  • Ubuntu 20.04: WordPress dengan instalasi nginx