我有一些表在一个过程中的一些最后步骤后不能被修改。
要验证它没有进行任何修改(在最终状态之后),我正在考虑制作所有列的哈希值。所以,对于每一行我:
将来,为了验证,我只需再次执行哈希并与之前获得的结果进行比较。
有更好的方法吗?
如果没有,在将其他数据类型转换为varchar时,我应该使用convert(varchar, ...)
还是要根据数据的类型定义varchar
的长度?
答案 0 :(得分:1)
就个人而言,如果我采用这种方法,我会使用时间戳字段而不是哈希。这将在行中发生任何事情时自动更新,并且比您描述的内容更容易。
验证方法与您在问题中描述的方法类似。为了简化审核,您可以使用触发器将时间戳值存储到另一个表中。
或者......说到触发器。如果您的真实意图是完全阻止更新,则可以使用触发器完全取消更新(除非它符合您设置的特定要求)。
这是假设您有理由不仅通过撤消对所有用户的更新/删除权限来锁定表上的权限。 (这将是最简单的)。