本文介紹了MySQL 中的 CHECK 約束不起作用的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
首先我創(chuàng)建了一個表格
CREATE TABLE Customer (
SD integer CHECK (SD > 0),
Last_Name varchar (30),
First_Name varchar(30)
);
然后在該表中插入值
INSERT INTO Customer values ('-2','abc','zz');
MySQL 沒有顯示錯誤,它接受了值.
MySQL doesn't show an error, it accepted the values.
推薦答案
MySQL 8.0.16 是第一個支持 CHECK 約束的版本.
MySQL 8.0.16 is the first version that supports CHECK constraints.
閱讀https://dev.mysql.com/doc/refman/8.0/en/create-table-check-constraints.html
如果您使用 MySQL 8.0.15 或更早版本,MySQL參考手冊說:
If you use MySQL 8.0.15 or earlier, the MySQL Reference Manual says:
CHECK
子句被解析但被所有存儲引擎忽略.
The
CHECK
clause is parsed but ignored by all storage engines.
嘗試觸發(fā)器...
mysql> delimiter //
mysql> CREATE TRIGGER trig_sd_check BEFORE INSERT ON Customer
-> FOR EACH ROW
-> BEGIN
-> IF NEW.SD<0 THEN
-> SET NEW.SD=0;
-> END IF;
-> END
-> //
mysql> delimiter ;
希望有所幫助.
這篇關(guān)于MySQL 中的 CHECK 約束不起作用的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!
【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!