Rumah > pangkalan data > tutorial mysql > Bolehkah Pencetus MySQL Meniru Gelagat Kekangan CHECK?

Bolehkah Pencetus MySQL Meniru Gelagat Kekangan CHECK?

Barbara Streisand
Lepaskan: 2024-11-19 15:42:03
asal
451 orang telah melayarinya

Can MySQL Triggers Mimic the Behavior of CHECK Constraints?

Bolehkah Pencetus MySQL Meniru Kekangan CHECK?

Kekangan CHECK ialah ciri berguna dalam sistem RDBMS lain yang membenarkan penguatkuasaan syarat tertentu pada nilai lajur. Walau bagaimanapun, MySQL tidak menyokong kekangan CHECK secara asli. Ini menimbulkan cabaran bagi pembangun yang ingin melaksanakan fungsi yang serupa.

Satu penyelesaian berpotensi untuk isu ini ialah menggunakan pencetus MySQL. Pencetus ialah objek pangkalan data yang melakukan tindakan khusus apabila peristiwa tertentu berlaku, seperti memasukkan, mengemas kini atau memadam data daripada jadual. Dengan mencipta pencetus, anda boleh menentukan satu set syarat yang harus dipenuhi sebelum operasi di atas meja boleh dilaksanakan.

Mengembalikan Ralat dengan Pencetus

Walaupun pencetus boleh digunakan untuk menetapkan nilai lalai untuk medan, ia juga mungkin untuk membina pencetus yang mengembalikan ralat jika syarat tidak dipenuhi. Ini membolehkan kita mensimulasikan gelagat kekangan CHECK.

Sebagai contoh, mari buat pencetus yang menyemak lajur bulan jadual statistik dan melemparkan ralat jika nilainya lebih besar daripada 12. Tingkah laku ini meniru SEMAK kekangan:

Untuk INSERT operasi:

delimiter $$
create trigger chk_stats before insert on stats 
  for each row 
   begin  
      if  new.month>12 then
       SIGNAL SQLSTATE '45000'   
       SET MESSAGE_TEXT = 'Cannot add or update row: only';
       end if; 
    end; 
    $$
Salin selepas log masuk

Untuk operasi KEMASKINI:

delimiter $$
create trigger chk_stats1 before update on stats 
  for each row 
   begin  
    if  new.month>12 then
        SIGNAL SQLSTATE '45000'   
        SET MESSAGE_TEXT = 'Cannot add or update row: only';
      end if; 
      end; 
      $$
Salin selepas log masuk

Dengan menggunakan pencetus ini, kami boleh mencipta kekangan SEMAK pengganti dalam MySQL dan menguatkuasakan syarat yang kami kehendaki pada lajur bulan sebelum sebarang operasi INSERT atau UPDATE dilakukan.

Atas ialah kandungan terperinci Bolehkah Pencetus MySQL Meniru Gelagat Kekangan CHECK?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan