加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用SQLite更新current_timestamp

发布时间:2020-12-12 19:14:23 所属栏目:百科 来源:网络整理
导读:每当更新行时,我想更新具有当前时间戳的字段。 在MySQL中,我会在声明表时做 LastUpdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP 但是,“on update”部分与SQLite不起作用。 我找不到一个自动执行的方法,我需要声明一
每当更新行时,我想更新具有当前时间戳的字段。

在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 SQL,SQLite,PostgreSQL和Oracle上完成此操作。

路人最后一句话:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读