MySql 约束特定字段值大于零

发布于 2024-11-03 13:27:11 字数 352 浏览 1 评论 0原文

我有以下 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜妞爱困 2024-11-10 13:27:11

检查约束在 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

伴梦长久 2024-11-10 13:27:11

您可以添加

tinyint NOT NULL

的派生列

id_check

使用(例如)公式调用

(IF(id<1,NULL,1))

(许多其他可行的变体)

请注意,列名称不区分大小写,因此最好将它们小写。

You could add a derived

tinyint NOT NULL

column called

id_check

with (for example) the formula

(IF(id<1,NULL,1))

(many other variants feasible)

Be aware that column names are non-case-sensitive, so best lowercase them.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文