要解决此问题,您可以使用触发器而不是默认值:
>添加没有默认值的列:
ALTER table Mytable ADD ColUMN foo timestamp DEFAulT NulL;
>使用触发器设置默认值:
ADD TRIGGER Mytable_foo_defaultAFTER INSERT ON MytableFOR EACH ROWWHEN NEW.foo IS NulLBEGIN UPDATE Mytable SET foo = CURRENT_TIMESTAMP WHERE rowID = NEW.rowID;END;
或者,首先修改表内容,以便所有行都有一个值,然后设置默认值:
>添加没有默认值的列:
ALTER table Mytable ADD ColUMN foo timestamp DEFAulT NulL /* replace me */;
>将列值设置为所有行中的某个值(实际值无关紧要,重要的是所有行现在都有新列):
UPDATE Mytable SET foo = CURRENT_TIMESTAMP;
>更改默认值(文档:PRAGMA writable_schema,sqlite_master):
PRAGMA writable_schema = on;UPDATE sqlite_masterSET sql = replace(sql,'DEFAulT NulL /* replace me */','DEFAulT CURRENT_TIMESTAMP')WHERE type = 'table' AND name = 'Mytable';PRAGMA writable_schema = off;
>重新打开数据库(否则,sqlite将不知道新的默认值).
总结以上是内存溢出为你收集整理的更改sqlite表以添加具有默认值的时间戳列全部内容,希望文章能够帮你解决更改sqlite表以添加具有默认值的时间戳列所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)