gpt4 book ai didi

mysql - 创建mysql表限制整数为正值

转载 作者:行者123 更新时间:2023-11-29 04:45:01 26 4
gpt4 key购买 nike

我尝试创建一个具有 INTEGER 属性的表,该属性应限制为正数。我知道有一个 UNSIGNED 选项,但这样做是错误的。因为它允许添加 -10 作为值。它只会得到 10。

是否可以拒绝错误输入?我尝试使用 CHECK

DROP TABLE Produkt;
CREATE TABLE Produkt (
Bezeichnung VARCHAR(237) PRIMARY KEY,
ProduktNr INTEGER NOT NULL,
Produktart VARCHAR(3) DEFAULT "XXX",
CONSTRAINT onlyPositive CHECK(ProduktNr >= 0)
);

但我仍然可以添加 -10 作为值...我做错了什么?

最佳答案

1) 在严格的 sql_mode 中如果您将列定义为

ProduktNr INT UNSIGNED NOT NULL,

然后尝试插入一个负值你会得到一个错误

ERROR 1264 (22003): Out of range value for column 'ProduktNr' at row 1

这是 SQLFiddle 演示。 取消注释插入语句并单击 Build Schema

2) MySQL 仍然缺乏对CHECK 约束的支持。 The CHECK clause is parsed but ignored by all storage engines .

3) 旁注:不要使用 VARCHAR(237) 列作为 PRIMARY KEY,尤其是当您使用 InnoDB 引擎时(所有次要表格中的指标还包括 PK 值)。

关于mysql - 创建mysql表限制整数为正值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20563112/

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