Создать триггеры, которые получат свои новые данные для вставки в новую таблицу оракула - PullRequest
0 голосов
/ 01 сентября 2018

Сервер базы данных: Oracle 11g

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

У меня есть две таблицы, которые имеют отношение 1-ко-многим .

Родительская таблица:

   CREATE TABLE "CLIENT_DETAILS" ( 
          ID NUMBER(12) PRIMARY KEY NOT NULL ENABLE,
          FIRSTNAME VARCHAR2(20) NOT NULL,
          RATING NUMBER(3) NOT NULL,
          BIRTHDATE DATE NOT NULL
       );

СТОЛ ДЛЯ РЕБЕНКА:

  CREATE TABLE "CLIENT_ORDERS" ( 
      ID NUMBER(12) PRIMARY KEY NOT NULL ENABLE,
      CLIENT_DETAILS_ID NUMBER(12) REFERENCES CLIENT_DETAILS(ID),
      REMARKS VARCHAR2(50) NOT NULL,
      DATE_TRANS TIMESTAMP NOT NULL
   );

Таблица аудита:

 CREATE TABLE "CLIENT_ORDERS_AUDIT" ( 
          CLIENT_DETAILS_ID NUMBER(12) NOT NULL,
          FIRSTNAME VARCHAR2(20) NOT NULL,
          REMARKS VARCHAR2(50) NOT NULL,
          BIRTHDATE DATE NOT NULL,
          RATING VARCHR2(3) NOT NULL,
          DATE_TRANS TIMESTAMP NOT NULL
       );

РОДИТЕЛЬСКИЙ ТРИГГЕР:

 CREATE OR REPLACE TRIGGER "CLIENT_DETAILS_TRG"
      BEFORE INSERT ON "CLIENT_DETAILS"
      FOR EACH ROW
      DECLARE
      v_user VARCHAR2(50);

 BEGIN
      IF INSERTING THEN
        INSERT INTO "CLIENT_ORDERS_AUDIT" 
        (ID, FIRSTNAME, REMARKS, BIRTHDATE, RATING, DATE_TRANS)
        VALUES (:NEW.ID, :NEW.FIRSTNAME, NEW:RATNG, :NEW.BIRTHDATE);
   END IF;
END;
/
COMMIT;
EXIT;

РЕБЕНОК РЕБЕНКА:

 CREATE OR REPLACE TRIGGER "CLIENT_ORDERS_TRG"
      BEFORE INSERT ON "CLIENT_ORDERS"
      FOR EACH ROW
 DECLARE
      v_user VARCHAR2(50);

 BEGIN
      IF INSERTING THEN
        INSERT INTO "CLIENT_ORDERS_AUDIT" 
        (REMARKS, DATE_TRANS)
        VALUES (:NEW.REMARKS, :NEW.DATE_TRANS');
   END IF;
END;
/
COMMIT;
EXIT;

Таблица аудита содержит столбцы, объединенные из таблиц CLIENT_DETAILS и CLIENT_ORDERS. Как я могу ввести всю информацию в таблицу аудита с помощью триггера?

Сначала я создал два триггера. Эти два триггера вставляют данные в таблицу аудита, если в родительской и дочерней таблице произошла вставка. Но каждый раз, когда я вставляю данные в таблицу Client_Orders (child), у меня возникает нарушение ограничения, что столбцы в родительской таблице должны быть не нулевыми.

Можно ли как-нибудь вставить данные в таблицу аудита? Пожалуйста, дайте мне немного света. Я пытался найти, но не смог найти решение. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...