gpt4 book ai didi

Mysql检查约束不起作用

转载 作者:行者123 更新时间:2023-11-29 07:13:28 24 4
gpt4 key购买 nike

我将使用mysql约束来防止插入小于零的数字。我从 W3schools 找到了这个查询.

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)
)

但是当我插入 0 时它允许我这样做。有什么想法吗?

最佳答案

目前 MySQL 不支持 check,这意味着它会解析您的定义,但会忽略 check 部分。

The CHECK clause is parsed but ignored by all storage engines.

The docs

要实现相同的目的,您可以定义一个触发器,并在必要时使用信号取消更新/插入

SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid P_Id';

但您的实际问题是您没有将 P_Id 定义为自动递增 PRIMARY KEY。然后数据库会为您完成所有工作。

那么您根本不提供 P_Id。 DB 对该列进行编号,从 1 开始。

而且您实际上不应该使用 W3Schools。他们的教程很糟糕。

关于Mysql检查约束不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38803198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com