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!