MySql 约束特定字段值大于零
我有以下 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 ??
I have the following MySql syntax to create a table with constraint to check P_Id column have value greater than zero, but it still allows me to add values less than 0 like -1,-2, etc.
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
)
)
Is there anything that i am doing wrong in above structure to have value for P_Id > 0 ??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
检查约束在 mysql 中不起作用。你必须想出一些技巧来模仿他们。
看看这篇文章
http://forge.mysql.com/wiki/Triggers#Emulated_Check_Constraints
Check constraints don't work in mysql. You have to make some trick to emulate them.
Take a look at this article
http://forge.mysql.com/wiki/Triggers#Emulating_Check_Constraints
您可以添加
的派生列
使用(例如)公式调用
(许多其他可行的变体)
请注意,列名称不区分大小写,因此最好将它们小写。
You could add a derived
column called
with (for example) the formula
(many other variants feasible)
Be aware that column names are non-case-sensitive, so best lowercase them.