繁体   English   中英

SQL Server / Oracle表只能由触发器写吗?

[英]SQL Server/Oracle table writable only by a trigger?

我想知道是否有一种方法可以使表只能由SQL Server或Oracle DB中的特定触发器写入。 仅举一个例子:


Table: "Operation"

ID | 日期| Account1_ID | Account2_ID |


Table: "Transactions"

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


我要确保的是, 事务表仅从操作表中的触发器接收数据。

有办法实现吗?

执行方式允许您创建一个以不同于当前用户的用户身份运行的触发器。 因此,您可以创建一个对TRANSACTIONS表具有写访问权的单独用户,并以该用户身份执行触发器。

如果没有其他用户具有写访问权限,则只有触发器用户才能修改数据。

当然,然后您需要确保没有人可以该用户身份登录,并且您可以信任DBA来管理该帐户。

如果您正在寻找一种解决方案,如alter table TRANSACTIONS read only在触发器内部alter table TRANSACTIONS read only ,您将很失望,因为您不能在触发器内部包含DDL,因为它提供了隐式提交( 这是非常好东西 )。

我想您要回答的真正问题是, 仅从操作表中的触发器接收数据就是您真正的意思。 您是否担心其他用户将数据直接插入该表? 您的应用程序逻辑做什么? 它可以处理吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM