Bolehkah Pencetus MySQL Mensimulasikan Kekangan SEMAK?

Linda Hamilton
Lepaskan: 2024-11-13 07:45:02
asal
721 orang telah melayarinya

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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!

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