mysql - MySQL 检查约束违规
问题描述
我正在使用 Oracle SQL Developer 创建一个 MySQL 数据库。
我为货币创建了一个表,其中Currency_Code
列应包含三个字符(仅限字母),大写货币代码。
当我尝试添加一个值时,它说约束CHK_Currency_Code_1
已被违反,但我不确定为什么。
我对 SQL 很陌生。这是脚本:
CREATE TABLE IF NOT EXISTS Currency (
Currency_Code CHAR(3) NOT NULL UNIQUE,
PRIMARY KEY ( Currency_Code ),
CONSTRAINT CHK_Currency_Code_1 CHECK ( Currency_Code LIKE '[a-z][a-z][a-z]' ),
CONSTRAINT CHK_Currency_Code_2 CHECK ( Currency_Code = UPPER( Currency_Code ) )
);
INSERT INTO Currency (Currency_Code)
VALUES ('USD');
解决方案
你的正则表达式约束,
CONSTRAINT CHK_Currency_Code_1 CHECK ( Currency_Code LIKE '[a-z][a-z][a-z]' )
只允许小写,将其转换为只允许大写。
CONSTRAINT CHK_Currency_Code_1 CHECK ( Currency_Code LIKE '[A-Z][A-Z][A-Z]' )
现在,当您运行插入时,它将通过,因为“USD”是大写的。
推荐阅读
- generics - Rust 需要帮助重构过多的函数
- javascript - 如何单击量角器中被阻止的元素?
- ruby-on-rails - 单击时更改 Bulma 按钮的颜色
- reactjs - 如何获取文档 ID 和文档数据?
- mysql - 获取一个没有通话记录的随机客户,并按他们未接听的电话数量排序
- spring - Spring WebClient Post 方法正文
- visual-c++ - 在 MSVC 2017 上使用 _addcarry_u64 时结果错误
- php - 当我在 laravel 查询上运行代码时,我变得乱码
- database - 如何在 tsql 的循环中转到下一列
- autodesk-forge - 如何在 3D 视图中查看 dwg - 客户问题