用于验证的Sybase哈希+转换(varchar,...)?

时间:2011-12-15 22:33:58

标签: sql tsql sybase-ase

我有一些表在一个过程中的一些最后步骤后不能被修改。

要验证它没有进行任何修改(在最终状态之后),我正在考虑制作所有列的哈希值。所以,对于每一行我:

  1. 将varchar设为所有列(转换其他数据类型);
  2. 保存哈希结果
  3. 将来,为了验证,我只需再次执行哈希并与之前获得的结果进行比较。


    有更好的方法吗?

    如果没有,在将其他数据类型转换为varchar时,我应该使用convert(varchar, ...)还是要根据数据的类型定义varchar的长度?

1 个答案:

答案 0 :(得分:1)

就个人而言,如果我采用这种方法,我会使用时间戳字段而不是哈希。这将在行中发生任何事情时自动更新,并且比您描述的内容更容易。

验证方法与您在问题中描述的方法类似。为了简化审核,您可以使用触发器将时间戳值存储到另一个表中。

或者......说到触发器。如果您的真实意图是完全阻止更新,则可以使用触发器完全取消更新(除非它符合您设置的特定要求)。

这是假设您有理由不仅通过撤消对所有用户的更新/删除权限来锁定表上的权限。 (这将是最简单的)。