sql - 检查约束失败

标签 sql sqlite sql-like glob

我正在使用sqlite3

我已经创建了一个像这样的类的表

CREATE TABLE Class (
    ClassID char(5) PRIMARY KEY CHECK (ClassID LIKE 'CT[1-9][A-Z]' OR 'AT[1-9][1-9][A-Z]'),
    ClassQuantity int NOT NULL CHECK (ClassQuantity > 0)
);


当我在此表中插入一些值时

INSERT INTO Class
VALUES ('CT2D', 50);


它显示了一条错误消息


“检查约束失败”。


我已经根据检查条件写了值。有人可以帮我解决这个问题。

最佳答案

您的检查约束中的LIKE表达式试图使用SQL Server和Sybase等数据库支持的扩展语法。但是,我认为SQLite不支持此语法。解决方法是,如果您的SQLite版本具有REGEXP,我们可以改用它:

CREATE TABLE Class (
    ClassID char(5) PRIMARY KEY CHECK (ClassID REGEXP 'CT[1-9][A-Z]|AT[1-9][1-9][A-Z]'),
    ClassQuantity int NOT NULL CHECK (ClassQuantity > 0)
);

关于sql - 检查约束失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57866258/

相关文章:

mysql - 将 mySQL 与字符串中的任何单词匹配

sql - 基于表单域的查询条件

mysql - 我可以在 SQL 查询中安全地使用两个 MAX 调用吗

perl - 使用 Perl DBI 在 sqlite3 db 上运行 sql 语句时出错

sql - 使用 LIKE 语句查询任何单词,而不是整个单词

Mysql 对多个 LIKE 进行排序

sql - 自连接查询

mysql - 如何查明子表中的所有 FK 引用是否都存在于父表中

针对 SQLite 查询结果的 C# IF 语句

java - 如何在android中将数据库记录转换为csv文件?