Sql 防止oracle在更新前触发停止更新表失败

Sql 防止oracle在更新前触发停止更新表失败,sql,oracle,Sql,Oracle,如果在表上创建“更新前”触发器,而该触发器由于任何原因失败,则在修复或删除该触发器之前,用户无法更新该表。那么有什么方法可以防止此情况发生?我的意思是,如果您在编写触发器时出错,并且希望继续更新如果您的问题是您可能正在创建无效的触发器,那么您应该在禁用状态下创建触发器。然后,您可以在启用它之前确认它编译正确 这对处理运行时错误没有帮助 如果要替换现有触发器,新代码仍将替换旧代码,并且仍将被禁用。如果您依赖触发器代码来设置强制值,那么这将导致运行时错误 CREATE OR REPLACE TRIG

如果在表上创建“更新前”触发器,而该触发器由于任何原因失败,则在修复或删除该触发器之前,用户无法更新该表。那么有什么方法可以防止此情况发生?我的意思是,如果您在编写触发器时出错,并且希望继续更新

如果您的问题是您可能正在创建无效的触发器,那么您应该在禁用状态下创建触发器。然后,您可以在启用它之前确认它编译正确

这对处理运行时错误没有帮助

如果要替换现有触发器,新代码仍将替换旧代码,并且仍将被禁用。如果您依赖触发器代码来设置强制值,那么这将导致运行时错误

CREATE OR REPLACE TRIGGER TEST_TRIG
BEFORE INSERT ON TEST
FOR EACH ROW
DISABLED
BEGIN
  :NEW.TEST_KEY := TEST_SEQ.NEXTVAL;
END;

您可以添加一个异常块来捕获所有异常并以静默方式忽略它们。对于未来的开发人员来说,这是一个很好的地雷,他们想知道为什么更新触发器没有做它应该做的事情。请参阅:找到触发器中的错误并修复它。我的意思是,如果触发器在我创建它并运行ok时有效,并且由于数据库中的其他情况,例如删除表或向依赖表添加约束,这会使触发器无效,这会使其他用户无法更新表,直到您修复触发器。那么,有没有办法在表上写入更新前触发器?如果触发器失败,您可以更新表