Mysql裡check約束無效怎麼辦

2021-06-27 07:25:31 字數 659 閱讀 3095

今天寫到專案時,遇到了這個問題:msql裡check約束為什麼會無效?具體原因,不清楚,但是我找到了一些解決的辦法

例如下面一段**,建立好錶a後,新增check約束,要求a欄位和b欄位的值都大於等於0,隨後向a欄位和b欄位隨意插入-1,-2,這明顯違反check約束,但這段**在mysql裡面卻可以執行成。

執行結果如下:

1.  如果需要設定check約束的字段範圍小,並且比較容易列舉全部的值,就可以考慮將該字段的型別設定為列舉型別 enum()或集合型別set()。

比如性別字段可以這樣設定,插入列舉值以外值的操作將不被允許。

示例:

2.  如果需要設定check約束的字段範圍大,且列舉全部值比較困難,比如:>=0的值,那就只能使用觸發器來代替約束實現資料的有效性了。

下面這段**建立了乙個叫testtb1_a_b的約束器,它將保證新插入的資料在a,b欄位的值都不小於零。

MySQL中CHECK約束無效

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

MySQL的check約束無效怎麼辦?

1.check約束mysql可以使用check約束,但check約束對資料驗證沒有任何作用。create table temp id int auto increment primary key id name varchar 20 age int,check約束 check age 20 上面ch...

MySQL檢查約束(CHECK)

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