本文介紹了MySQL 中的 CHECK 約束不起作用的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
首先我創建了一個表格
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.
嘗試觸發器...
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 ;
希望有所幫助.
這篇關于MySQL 中的 CHECK 約束不起作用的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!
【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!