sqlite3.OperationalError:列的默认日期值不是常量

问题描述

我正在创建一个接受来自服务器的记录的 sqlite3 表。应该有一个日期/文本列也有一个 datetime DEFAULT 值,这样我就可以同步一条时间与服务器记录不同的记录。

我在此论坛上从 here 找到了解决方案。问题是它在执行表创建脚本时给了我以下错误sqlite3.OperationalError: default value of column [updated_at] is not constant

表已创建:

cur.execute('CREATE TABLE IF NOT EXISTS emp_tb(\
                    emp_id INTEGER PRIMARY KEY NOT NULL,\
                    emp_names TEXT NOT NULL,\
                    emp_number TEXT NOT NULL UNIQUE,\
                    ent_id INTEGER NOT NULL,\
                    active INTEGER NOT NULL DEFAULT "0",\
                    updated_at TEXT NULL DEFAULT (datetime("Now","localtime")),\
                    syncstatus INTEGER NOT NULL DEFAULT "0")')

我应该创建触发器吗?或者如何在格式 ("YYYY-MM-DD HH:MM:SS.SSS") 中设置认值,以防更新错过某个位置?

解决方法

对日期时间选项使用单引号 (')。正如评论中提到的,它们必须被转义(因为查询是用单引号分隔的)。