Rumah > pangkalan data > tutorial mysql > Bolehkah MySQL Triggers Mimic CHECK Constraints dengan Mengembalikan Ralat?

Bolehkah MySQL Triggers Mimic CHECK Constraints dengan Mengembalikan Ralat?

Mary-Kate Olsen
Lepaskan: 2024-11-25 00:30:10
asal
746 orang telah melayarinya

Can MySQL Triggers Mimic CHECK Constraints by Returning Errors?

Menggunakan Pencetus MySQL untuk Meniru Kekangan CHECK

MySQL, tidak seperti RDBMS lain, membolehkan pemahaman tentang kekangan CHECK tetapi gagal melaksanakannya. Had ini memerlukan penerokaan pendekatan alternatif, termasuk penggunaan pencetus. Walau bagaimanapun, kebanyakan pencetus ini hanya menetapkan nilai lalai dan bukannya mengembalikan ralat.

Bolehkah Pencetus Dibina untuk Mengembalikan Ralat Apabila Syarat Tidak Dipenuhi?

Memang, ia adalah mungkin untuk membina pencetus yang mengembalikan ralat jika syarat tertentu tidak dipenuhi. Dengan menggunakan pernyataan SIGNAL dan SET MESSAGE_TEXT, pencetus boleh mencontohi kekangan CHECK dengan berkesan.

Pelaksanaan Pencetus

Pertimbangkan pencetus berikut, yang menyerupai kekangan CHECK yang memastikan medan "bulan" tidak boleh melebihi 12:

delimiter $$
create trigger chk_stats 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

Pencetus ini beroperasi sebelum operasi kemas kini dan menyemak nilai baharu medan "bulan". Jika nilai melebihi 12, ia menimbulkan ralat dengan SQLSTATE '45000' dan mesej "Tidak boleh menambah atau mengemas kini baris: sahaja."

Pencetus untuk Sisipan

Pencetus yang serupa boleh digunakan untuk operasi sisipan:

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

Dengan menggunakan mencetuskan dengan cara ini, anda boleh meniru fungsi kekangan CHECK dalam MySQL dengan berkesan, memastikan integriti data dan menghalang nilai tidak sah daripada dimasukkan atau dikemas kini.

Atas ialah kandungan terperinci Bolehkah MySQL Triggers Mimic CHECK Constraints dengan Mengembalikan Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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