【发布时间】:2013-02-05 22:14:33
【问题描述】:
这个问题可能有点奇怪。但我正在寻找一种仅在用户发表评论时才允许更新表格的方法。更新普通表时,应将 cmets 保存在第二个审计表中。
我认为在 oracle 中,用户无法在执行“更新表集...”时发表评论。
所以我创建了自己的程序,用户可以在其中将语句和注释作为参数传递。没有此过程的更新会被触发器阻止。
create or replace
PROCEDURE Update_Table(stmt varchar2, comment varchar2) AS
BEGIN
Insert into audit_table values(stmt, comment);
Execute immediate stmt;
END Update_Table;
我对这个解决方案并不满意。所以也许有更简单的解决方案。
【问题讨论】:
-
如果一个视图包含一个“comment”列并且有一个在主表上执行更新并将评论插入到审计表中的触发器而不是触发器。然后您可以撤销对表的更新权限,并且所有更新都必须通过视图。不知道这样的触发器是否可能。
-
好的,但我也需要像上面这样的程序,或者?
-
没有过程,只有触发器。
-
@a_horse_with_no_name 是的。
标签: oracle triggers comments procedure