MySQL的check約束無效怎麼辦?

2021-06-28 22:30:03 字數 774 閱讀 1672

1.check約束
mysql可以使用check約束,但check約束對資料驗證沒有任何作用。
create table temp(
id int auto_increment primary key(id),
name varchar(20),
age int,
/*check約束*/
check(age > 20)
);
上面check約束要求age必須大於0,但沒有任何作用。但是建立table的時候沒有任何錯誤或警告。
2.可以使用enum替代
enum(『val1』,

『val2』, …)

列舉型別,該列的值只能是enum括號中出現的值的之一

例如:

create table temp(
id int auto_increment primary key(id),
name varchar(20),
age int,
/*  enum  */
*** enum('y','n') not null default 'y'
);
enum列舉型別,強制列值只能使用enum('y','n')中限定的內容

MySQL中CHECK約束無效

今天才知道在mysql中check約束是無效的,例如下面一段 在建立表table1時新增了check約束,要求field1欄位的值大於零,隨後向field1欄位插入 1,這明顯違反check約束,但這段 在mysql中卻可以執行成功。create table table1 field1 int,ch...

Mysql裡check約束無效怎麼辦

今天寫到專案時,遇到了這個問題 msql裡check約束為什麼會無效?具體原因,不清楚,但是我找到了一些解決的辦法 例如下面一段 建立好錶a後,新增check約束,要求a欄位和b欄位的值都大於等於0,隨後向a欄位和b欄位隨意插入 1,2,這明顯違反check約束,但這段 在mysql裡面卻可以執行成...

MySQL檢查約束(CHECK)

mysql 檢查約束 check 可以通過 create table 或 alter table 語句實現,根據使用者實際的完整性要求來定義。它可以分別對列或表實施 check 約束。檢查約束使用check關鍵字,具體的語法格式如下 check 表示式 其中 表示式 指的就是 sql 表示式,用於指...