You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无需触发器自动将字段设为getdate()的实现方案咨询

关于强制dbupddate字段自动记录最后修改时间的问题

哎,很遗憾地告诉你,根据大家的讨论,确实没有办法在没有触发器权限、同时用户能手动指定该字段值的情况下,强制让dbupddate字段始终自动使用GETDATE()来记录最后插入/更新的时间

不过大家也给出了不少实用的建议,或许能帮你在后续场景里解决类似问题:

  • 如果之后能拿到触发器权限,创建INSTEAD OF INSERT/UPDATE触发器是最直接的方案——在触发器里直接把dbupddate设为GETDATE(),完全忽略用户传入的自定义值。
  • 可以考虑用存储过程封装表的所有插入、更新操作,在存储过程里强制指定dbupddate = GETDATE(),要求业务侧必须通过这个存储过程来操作表,而不是直接写SQL语句修改表数据。
  • 试着和团队管理员沟通,看看能不能调整表的权限设置,限制用户直接修改dbupddate字段的权限,只允许通过特定的合规方式(比如上面说的存储过程)来维护这个字段。
  • 要是你用的是SQL Server,也可以考虑搭配ROWVERSION(旧称TIMESTAMP)字段作为辅助——它虽然不是datetime类型,但能精准记录行的最后修改时间戳,不过没法直接替代你需要的日期时间格式字段。

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

火山引擎 最新活动