Rumah >pangkalan data >tutorial mysql >Bolehkah Pencetus MySQL Mensimulasikan Kekangan SEMAK?

Bolehkah Pencetus MySQL Mensimulasikan Kekangan SEMAK?

Linda Hamilton
Linda Hamiltonasal
2024-11-13 07:45:02792semak imbas

Can MySQL Triggers Simulate CHECK Constraints?

Mencontohi Kekangan CHECK dengan Pencetus MySQL

Dalam MySQL, kekangan CHECK, biasanya digunakan untuk menguatkuasakan integriti data, tidak disokong sepenuhnya seperti yang lain. RDBMS. Walau bagaimanapun, adalah mungkin untuk mensimulasikan kefungsian mereka menggunakan pencetus.

Adakah Kemungkinan untuk Membina Pencetus Ralat-Returning?

Ya, adalah mungkin untuk mencipta pencetus yang mengembalikan ralat jika syarat tertentu tidak dipenuhi. Ini secara berkesan meniru gelagat kekangan CHECK.

Contoh Pencetus Kemas Kini

Untuk mencipta pencetus yang mengembalikan ralat semasa kemas kini, gunakan templat berikut:

CREATE TRIGGER <trigger_name> BEFORE UPDATE ON <table_name>
FOR EACH ROW
BEGIN
  IF (condition_not_met) THEN
    SIGNAL SQLSTATE '45000';
    SET MESSAGE_TEXT = 'Error message';
  END IF;
END;

Sebagai contoh, untuk menyemak sama ada nilai bulan dalam jadual "statistik" adalah kurang daripada atau sama dengan 12 sebelum mengemas kini:

CREATE TRIGGER chk_stats1 BEFORE UPDATE ON stats
FOR EACH ROW
BEGIN
  IF (new.month > 12) THEN
    SIGNAL SQLSTATE '45000';
    SET MESSAGE_TEXT = 'Month must be less than or equal to 12';
  END IF;
END;

Contoh Pencetus untuk Sisipan

Begitu juga, untuk sisipan:

CREATE TRIGGER <trigger_name> BEFORE INSERT ON <table_name>
FOR EACH ROW
BEGIN
  IF (condition_not_met) THEN
    SIGNAL SQLSTATE '45000';
    SET MESSAGE_TEXT = 'Error message';
  END IF;
END;

Sebagai contoh, untuk menyemak nilai bulan sebelum memasukkan ke dalam jadual "statistik":

CREATE TRIGGER chk_stats BEFORE INSERT ON stats
FOR EACH ROW
BEGIN
  IF (new.month > 12) THEN
    SIGNAL SQLSTATE '45000';
    SET MESSAGE_TEXT = 'Month must be less than or equal to 12';
  END IF;
END;

Pencetus ini mensimulasikan tingkah laku kekangan CHECK, menghalang data daripada dimasukkan atau dikemas kini jika syarat yang dinyatakan dilanggar.

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

Kenyataan:
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