Нужна помощь по триггеру базы данных PL / SQL - PullRequest
0 голосов
/ 01 июля 2018

У меня есть таблица триггеров БД before insert on emp. Я хотел бы добавить таблицу sal, comm from emp_test и использовать это значение по умолчанию в таблице emp по триггеру. Есть идеи как это сделать?

1 Ответ

0 голосов
/ 01 июля 2018

Пока вы не предоставите ответы на вопросы, которые я разместил в комментарии, вот как вы можете это сделать. Посмотри, сможешь ли ты это отрегулировать.

Таблица EMP_TEST содержит только одну строку (что-то вроде глупо ; вы предпочитаете использовать значение DEFAULT для этих столбцов в таблице EMP).

SQL> create table emp_test (sal number, comm number);

Table created.

SQL> insert into emp_test (sal, comm) values (3000, 100);

1 row created.

Триггер принимает значения SAL и COMM, если они предоставляются; в противном случае он принимает значения из таблицы EMP_TEST.

SQL> create or replace trigger trg_bi_emp
  2    before insert on emp
  3    for each row
  4  begin
  5    select nvl(:new.sal, t.sal),
  6           nvl(:new.comm, t.comm)
  7     into :new.sal,
  8          :new.comm
  9     from emp_test t;
 10  end;
 11  /

Trigger created.

Тестирование: я не предоставил значение SAL (поэтому триггер вставит единицу EMP_TEST), но я предоставил COMM:

SQL> insert into emp (empno, ename, deptno, sal, comm)
  2    values (1, 'Littlefoot', 40, null, 50);

1 row created.

SQL> select * from emp where empno = 1;

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
         1 Littlefoot                                     3000         50         40

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