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

10-07 19:42