这个问题可能有点奇怪。但是我正在寻找一种方式,只有当用户发表评论时才允许更新表格。更新普通表时,应将注释保存在第二个审计表中。
我认为oracle中没有办法在执行“update table set ...”时用户可以发表评论。
因此,我创建我自己的过程,其中用户可以传递语句和评论作为参数。没有这个过程的更新被一个触发器阻止。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;
我对这个解决方案并不满意。所以也许有更简单的解决方案。
那么包含“注释”列的视图又如何,而不是在主表上进行更新并将评论插入到审计表中的触发器。然后,您可以撤销表上的更新权限,所有更新都必须通过该视图。不知道这样的触发器是否可能。 – 2013-02-20 19:06:16
好的,但我还需要像上面的程序,或? – Maxii 2013-02-20 19:11:25
没有程序,只有触发器。 – 2013-02-20 19:36:57