SQL服务器/ Oracle表只能由一个触发写吗?(SQL Server/Oracle table

2019-10-21 08:46发布

我想知道如果有一种方法,使一个表只在SQL Server或Oracle数据库的特定的触发可写的。 只是为了让一个例子:


Table: "Operation"

ID | 日期| Account1_ID | Account2_ID |


Table: "Transactions"

ID | 日期| 帐号| 债务| 信用


我想确保的是, 交易表只在手术台上的触发接收数据。

有没有一种方法来实现这一目标?

Answer 1:

EXECUTE AS允许您创建运行作为当前用户不同的用户的触发器。 所以,你可以创建谁拥有写访问您的交易台单独的用户,以及执行触发器为用户。

如果没有其他用户有写入权限,只有触发用户可以修改数据。

当然,你这时就需要确保没有人可以以该用户登录,你可以相信你的DBA来管理帐户。



Answer 2:

如果你正在寻找一个做类似的解决方案alter table TRANSACTIONS read only里面你会失望,因为你不能包括由于它给人一种隐式提交触发内部DDL触发器的( 这是一个非常好东西 )。

我想你必须回答真正的问题是你真正的意思是只能从手术台上的触发接收数据 。 你怕其他的用户可以直接将数据插入到该表的? 什么是您的应用程序逻辑吗? 是否处理呢?



文章来源: SQL Server/Oracle table writable only by a trigger?