将记录永久标记为只读的最佳方法是什么?

时间:2009-04-21 15:29:38

标签: sql sql-server vba ms-access access-vba

我有一个连接到SQL Server 2000的Access 2003应用程序。

我有一张表,我需要在其中锁定记录以及不同表中的所有相关记录。通过“锁定”,我的意思是将它们标记为只读,这样除非管理员解锁它们,否则任何客户都无法编辑这些记录。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

很可能在数据库级别没有“优雅”的方法。但是你可以做几条路线。

  1. 为每个表添加一个“锁定”位字段,并在“锁定”该级别的父级联。
  2. 与#1一起在更新和删除时添加触发器,如果​​设置了标志,则可以取消更新或删除。
  3. 这是我能想到的在数据库级别强制执行它的唯一真正简单的方法。

答案 1 :(得分:0)

假设您的数据在SQL Server中,我会首先使用SQL Server安全性。我们通常不允许对表进行任何访问,然后通过SP控制它。 SP可以使用更复杂的逻辑来确定特定操作是否应该通过。

如果这不是一个选项,您可以随时使用触发器,检查行并拒绝更新或删除该方式。

有很多方法可以给这只猫上皮。

答案 2 :(得分:0)

扔掉那里的另一种选择:

  • 将last_updated列添加到您的 表,由更新更新 触发
  • 创建一个表,Locked_Widgets(或其他),它只是基表的PK和last_updated列,整个列组成了Locked_Widgets中的PK
  • 将基本表中的非级联外键放入Locked_Widgets

如果有人试图更新该行,则触发器将尝试更新last_updated列,外键约束将导致更新失败。