使用 sqlite 检查来验证列中输入的日期是否具有正确的格式

lok*_*art 7 sqlite date constraints

我创建了一个表,如下所示:

CREATE TABLE case_status(data_entry_timestamp DATETIME DEFAULT (datetime('now','localtime')) NOT NULL,
                         case_number TEXT PRIMARY KEY NOT NULL, 
                         case_name TEXT DEFAULT MISSING, 
                         death_reportdate DATE CONSTRAINT death_reportdate_chk CHECK (death_reportdate==strftime('%Y-%m-%d',death_reportdate)),
                         );
Run Code Online (Sandbox Code Playgroud)

该列death_reportdate需要具有预定义格式的日期(例如 2000-12-31)。我创建了表,插入了一些数据行,然后尝试修改 中的数据death_reportdate,当我向其中输入一些随机字符串时,检查规则似乎被绕过。

我做错了什么?

小智 4

你最后多了一个逗号。正确代码:

CREATE TABLE case_status(data_entry_timestamp DATETIME DEFAULT (datetime('now','localtime')) NOT NULL,
    case_number TEXT PRIMARY KEY NOT NULL, 
    case_name TEXT DEFAULT MISSING, 
    death_reportdate DATE CONSTRAINT death_reportdate_chk CHECK (death_reportdate==strftime('%Y-%m-%d',death_reportdate))
    )
Run Code Online (Sandbox Code Playgroud)