【发布时间】:2011-08-11 11:45:59
【问题描述】:
我有以下 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 的价值吗??
【问题讨论】:
-
P_Id 应该是主键吗?如果是这样,您最好让 MySQL 使用
PRIMARY KEY (P_Id)和AUTO_INCREMENT作为 P_Id 上的选项来处理它。 -
不,P_Id 不应该是主键。
-
UNSIGNED INT 对你有用吗?
-
是的,UNSIGNED INT 有效,但我想使用约束