防止更新 oracle db 中的多行

ZSc*_*idi 3 oracle constraints

我在最新的补丁中遇到了一个大问题。更新条件不完整,我不小心更新了多行。

我现在想要做的是通过为表设置约束来防止这种情况,一旦我尝试更新多行就会导致异常。可选择使用特定参数。

有没有办法在 oracle 11.2 中做到这一点?

Bob*_*ica 5

您可以使用复合触发器来完成此操作:

CREATE OR REPLACE TRIGGER TABLE1_FAIL_MULT_UPDATES_TRG
  FOR UPDATE ON TABLE1
COMPOUND TRIGGER
  nUpdate_count  NUMBER;

  BEFORE STATEMENT IS
  BEGIN
    nUpdate_count := 0;
  END BEFORE STATEMENT;

  BEFORE EACH ROW IS
  BEGIN
    IF UPDATING THEN
      nUpdate_count := nUpdate_count + 1;

      IF nUpdate_count > 1 THEN
        RAISE_APPLICATION_ERROR(-20100, 'Attempted to update more than 1 row');
      END IF;
    END IF;
  END BEFORE EACH ROW;

END TABLE1_FAIL_MULT_UPDATES_TRG;
Run Code Online (Sandbox Code Playgroud)

您可以在此处进一步阅读复合触发器

祝你好运。