gpt4 book ai didi

mysql - 如何在 MySQL 中向整数列添加正整数约束?

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

我们如何添加一个约束来强制列仅具有正值。

尝试了以下mysql语句,但不起作用

create table test ( test_column integer CONSTRAINT blah > 0);

最佳答案

您可以使用关键字unsigned来表示整数不允许有“符号”(即 - 它只能是正数):

CREATE TABLE test (
test_column int(11) unsigned
);

您可以阅读有关数字数据类型(有符号和无符号)的更多信息 here .

就防止插入负值的实际约束而言,MySQL 有一个 CHECK但是,根据文档,可以在 CREATE TABLE 语句中使用的子句:

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

作为引用,以下是您将如何使用它(虽然它执行得绝对好,但它什么也不做 - 正如手册所述):

CREATE TABLE test (
test_column int(11) unsigned CHECK (test_column > 0)
);

更新(完全拒绝负值)
我从您的一些评论中注意到,您希望完全拒绝具有负值的查询,而不是将其设置为 0 (因为进入 unsigned 列的正常交易会做)。一般来说,没有任何约束可以做到这一点(至少据我所知),但是,如果您打开严格模式(使用 STRICT_TRANS_TABLES ),则任何将负值插入无符号列的查询都会失败错误(以及任何其他数据插入错误,例如无效的 enum 值)。

您可以通过在插入命令之前运行以下命令来测试它:

SET @@SESSION.sql_mode = 'STRICT_TRANS_TABLES';

如果它适合您,您可以使用 sql-mode="STRICT_TRANS_TABLES" 更新 MySQL 配置或使用 SET @@GLOBAL.sql_mode = 'STRICT_TRANS_TABLES'; (我不确定 SET 命令是否会影响全局 mysql 配置,所以更新实际的配置文件可能会更好)。

关于mysql - 如何在 MySQL 中向整数列添加正整数约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35149498/

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