我正在使用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)
);