SQL - регистрация обновленных и вставленных записей - PullRequest
0 голосов
/ 21 сентября 2018

Глядя на аудит обновленных и вставленных строк.

При запуске сценария возможно ли захватить '(x строк, затронутых)' и т. Д.

Например

INSERT INTO test_table (name, age)
VALUES ('Patrick', 22);

UPDATE test_table
SET age = 33
WHERE name = 'Patrick' 

'(1 row(s) affected)'

Затем вставьте в таблицу аудита.XXX Быть '(затронут 1 ряд (ы)).

INSERT INTO audit_table (table_used, records_changed)
VALUES ('test_table', XXX);

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Кроме того, вы можете использовать триггер, чтобы увидеть изменяющиеся строки.

CREATE TRIGGER test_table_aut
 AFTER 
 UPDATE 
 ON test_table
 REFERENCING OLD AS OLD NEW AS NEW
 FOR EACH ROW
DECLARE
  d_user_id NUMBER(8) := FND_GLOBAL.USER_ID;
  d_date    DATE      := SYSDATE;
  d_error    VARCHAR2(2000);
BEGIN

  INSERT INTO audit_table (
    updated_by,
    update_date,
    old_name,
    old_age              
    new_name,
    new_age
    )
  VALUES (
    d_user_id,
    d_date,
    :OLD.name,
    :OLD.age,
    :NEW.name
    :NEW.age
);

  EXCEPTION WHEN OTHERS THEN
    d_error := SQLERRM;
    INSERT INTO xx_error VALUES('test_table_aut '||d_error);
END;
/

Таким образом, вы можете получить, например, вывод ниже.

output

0 голосов
/ 21 сентября 2018

@@ ROWCOUNT

DECLARE @RowCount1 INT;

INSERT INTO test_table (name, age)
VALUES ('Patrick', 22);

UPDATE test_table
SET age = 33
WHERE name = 'Patrick' 

SELECT @RowCount1 = @@ROWCOUNT

INSERT INTO audit_table (table_used, records_changed)
VALUES ('test_table', @RowCount1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...