You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QGIS中如何跟踪GeoPackage属性表记录的创建与修改时间?

QGIS中GeoPackage属性表自动跟踪创建/修改时间的方法

创建时间字段设置

  • 打开目标图层的属性表,点击顶部的「字段编辑」按钮(铅笔图标)进入编辑模式
  • 点击「添加字段」,设置字段名(比如create_time),类型选择「日期时间」,勾选「允许NULL值」,在「默认值」框中输入CURRENT_TIMESTAMP,保存字段设置
  • 新增记录时,该字段会自动填充当前时间;已存在的旧记录可通过字段计算器的now()函数批量补填一次

修改时间字段设置(QGIS内置简便方法)

仅适用于QGIS 3.16及以上版本:

  • 同样进入字段编辑模式,添加字段(比如update_time),类型选择「日期时间」
  • 勾选字段设置里的「自动更新」选项,在「默认值」框中输入CURRENT_TIMESTAMP,保存设置
  • 后续修改任意记录的属性时,update_time会自动更新为当前操作时间

跨工具通用方法:GeoPackage数据库触发器

如果需要在其他软件操作GeoPackage时也能自动更新时间,可通过SQL触发器实现:

  1. 打开QGIS的「DB Manager」,找到目标GeoPackage,展开到对应图层
  2. 切换到「SQL」标签,执行以下SQL语句(替换your_layer_name、create_time、update_time为实际名称):
    • 先创建字段(如果还没添加):
      ALTER TABLE your_layer_name ADD COLUMN create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
      ALTER TABLE your_layer_name ADD COLUMN update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
      
    • 添加创建时间触发器(确保新增记录自动赋值,防止手动修改):
      CREATE TRIGGER set_create_time BEFORE INSERT ON your_layer_name
      FOR EACH ROW WHEN NEW.create_time IS NULL
      BEGIN
        SET NEW.create_time = CURRENT_TIMESTAMP;
      END;
      
    • 添加修改时间触发器(每次更新记录时自动刷新):
      CREATE TRIGGER set_update_time BEFORE UPDATE ON your_layer_name
      FOR EACH ROW
      BEGIN
        SET NEW.update_time = CURRENT_TIMESTAMP;
      END;
      
  3. 执行完成后,无论用QGIS还是其他支持GeoPackage的工具修改记录,时间字段都会自动更新

内容的提问来源于stack exchange,提问作者user24491462

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 05:45:08