gpt4 book ai didi

MYSQL列默认值和范围

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

我做了一个这样的表格:

CREATE TABLE clients
(
empno INTEGER NULL DEFAULT 7654 CHECK ( 7000 <= empno AND
empno <= 8000 ),
cname VARCHAR(20) NOT NULL
);

我不希望 cname 有空白字段,empno 的默认值为 7654。 empno 的值也必须介于 7000 和 8000 之间。两个问题。首先,虽然我不能为 cname 设置 NULL,但如果我输入 ' ',它将接受该条目并显示为空白。它应该拒绝它。另外,我尝试了 INSERT INTO clients (cname, empno) VALUES ('JANE', 6789);它不应该接受它,但它接受了!我无法找出问题所在。

最佳答案

  1. empno 字段更改为 NOT NULL
  2. 这是一个文档化的特性:MySQL 忽略 CHECK 子句。

From MySql docs :

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

Report on MySQL Development forum

解决方法是创建另一个包含 7000 到 8000 值的表并添加外键约束,这是由 InnoDB 和 NDB 引擎强制执行的。说明您将如何使用此列,并且可能有更好的方法来解决它。

关于MYSQL列默认值和范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20222257/

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