3

我有以下 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 具有价值吗?

4

2 回答 2

2

检查约束在 mysql 中不起作用。你必须采取一些技巧来模仿它们。看看这篇文章

http://forge.mysql.com/wiki/Triggers#Emulating_Check_Constraints

于 2011-04-23T14:11:25.117 回答
1

你可以添加一个派生的

tinyint NOT NULL

列称为

id_check

用(例如)公式

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

(许多其他变体可行)

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

于 2019-02-20T15:57:09.280 回答