使用SQLite更新current_timestamp

前端之家收集整理的这篇文章主要介绍了使用SQLite更新current_timestamp前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
每当更新行时,我想更新具有当前时间戳的字段。

MysqL中,我会在声明表时做

LastUpdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP

但是,“on update”部分与sqlite不起作用。
我找不到一个自动执行的方法,我需要声明一个触发器吗?

编辑:为了记录,这里是我当前的触发器:

CREATE TRIGGER [UpdateLastTime]
AFTER UPDATE
ON Package
FOR EACH ROW
BEGIN
UPDATE Package SET LastUpdate = CURRENT_TIMESTAMP WHERE ActionId = old.ActionId;
END

谢谢

是的,你需要使用触发器。 (只是检查:你的帖子触发器是否正常工作?乍一看,对我来说看起来不错)

MysqL的ON UPDATE CURRENT_TIMESTAMP是一个非常独特的单用途快捷方式。就是这样;对于任何其他值或除TIMESTAMP之外的任何列类型,此构造不能类似使用。 (注意,这个功能是在TIMESTAMP type page而不是CREATE TABLE page定义的,因为这个功能特定于TIMESTAMP列而不是CREATE TABLE语句)。另外值得一提的是,它特定于TIMESTAMP类型,SQLite doesn’t even have distinct date/time types

据我所知,没有其他RDBMS提供这个捷径代替使用实际的触发器。从我读过的内容中,必须使用触发器在MS sqlsqlite,Postgresql和Oracle上完成此操作。

路人最后一句话:

这不是与ON UPDATE子句相关的外键约束混淆。这是完全不同的,可能所有支持外键限制的RDBMS(包括MysqLsqlite)都可以。

猜你在找的Sqlite相关文章