我有以下MySql语法创建一个带约束的表来检查P_Id列的值是否大于零,但它仍然允许我添加小于0的值,如-1,-2等。
CREATE TABLE Persons(
P_Id int NOT NULL ,
LastName varchar( 255 ) NOT NULL ,
FirstName varchar( 255 ) ,
Address varchar( 255 ) ,
City varchar( 255 ) ,
CHECK (
P_Id >0
)
)
在上述结构中我是否有任何错误对P_Id>有价值? 0 ??
答案 0 :(得分:2)
检查约束在mysql中不起作用。你必须制定一些技巧来模仿它们。 看一下这篇文章
http://forge.mysql.com/wiki/Triggers#Emulating_Check_Constraints
答案 1 :(得分:1)
您可以添加派生的
tinyint NOT NULL
列
id_check
带有(例如)公式
(IF(id<1,NULL,1))
(其他许多可行的变体)
请注意,列名不区分大小写,因此最好将其小写。