Sqlite如何自动更新时间字段。

sjmr444 2012-11-21 07:06:41
假设我有个表A, A中有两个字段 分别是ID和time
请问我如何在更新id的时候,由sqlite负责自动更新time

我能想到的是建个触发器,在update的时候,把time字段更新了。但是这样的话,是不是相当于,我更新id字段的时候,其实是执行了两次update语句,效率就低了啊。。。

不知道大家有什么好办法没。
...全文
3236 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjmr444 2012-11-22
  • 打赏
  • 举报
回复
引用 楼主 sjmr444 的回复:
假设我有个表A, A中有两个字段 分别是ID和time 请问我如何在更新id的时候,由sqlite负责自动更新time 我能想到的是建个触发器,在update的时候,把time字段更新了。但是这样的话,是不是相当于,我更新id字段的时候,其实是执行了两次update语句,效率就低了啊。。。 不知道大家有什么好办法没。
我的触发器是这样写的 create trigger A_Update before update on A for each row begin update A set time = datetime('now','localtime') where id = old.id; end; 不知道斑竹是不是这个意思。 如果是的话,我始终觉得在update 更新id的时候,实际上是执行了两次update语句,一次更新ID,一次更新tiem。。。还请斑竹给我讲讲。
sjmr444 2012-11-22
  • 打赏
  • 举报
回复
我的触发器是这样写的 create trigger A_Update before update on A for each row begin update A set time = datetime('now','localtime') where id = old.id; end; 不知道斑竹是不是这个意思。 如果是的话,我始终觉得在update 更新id的时候,实际上是执行了两次update语句,一次更新ID,一次更新tiem。。。还请斑竹给我讲讲。
sjmr444 2012-11-22
  • 打赏
  • 举报
回复
谢谢斑竹。。。我试试去。
zyq5945 2012-11-22
  • 打赏
  • 举报
回复
不需要调用UPDATE了,就是把new值修改下就可以,SQLite的触发器没有写过,你可以参考下ORACLE实现自增序列的触发器。
create trigger A_Update
before update on A
for each row  
begin
     set new.time = datetime('now','localtime');
end;
zyq5945 2012-11-21
  • 打赏
  • 举报
回复
不是更新两次,你在更新的before之前拦截,获取旧的时间修改成新的时间就可以了。

4,018

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧