У меня есть хранимая процедура, которая будет вставлять информацию о сотрудниках в 2 разные таблицы. Когда я запускаю скрипт в первый раз, он позволяет мне дважды вставить одну и ту же информацию, что неверно, так как предполагается, что это приведет к дублированию данных. Но когда я снова запущу, это вызовет только ошибку дублированных данных.
CREATE OR REPLACE PROCEDURE INSERT_EMPLOYEE(eNum IN NUMBER,
eName VARCHAR2,
dob DATE,
addr VARCHAR2,
hDate DATE,
lNum NUMBER,
status VARCHAR2,
expr VARCHAR2)
IS
BEGIN
INSERT ALL
INTO TRKEMPLOYEE (E#, NAME, DOB, ADDRESS, HIREDATE)
INTO MECHANIC (E#, L#, STATUS, EXPERIENCE) VALUES (eNum, lNum, status, expr)
SELECT eNum, eName, dob, addr, hDate
FROM dual
WHERE NOT EXISTS(SELECT *
FROM TRKEMPLOYEE
WHERE E# = eNum AND
NAME = eName AND
DOB = dob AND
ADDRESS = addr AND
HIREDATE = hDate);
END INSERT_EMPLOYEE;
/
EXECUTE INSERT_EMPLOYEE(17, 'Keban Tyz', TO_DATE('22-JAN-2019','DD-MON-YYYY'),'Sunshine Plazza
#4-567 S891011', sysdate-(1.5*365), 10124, 'AVAILABLE', 'EXPERT');
-- error supposed to trigger here, but my script allow this to execute on the first run
EXECUTE INSERT_EMPLOYEE(17, 'Keban Tyz', TO_DATE('22-JAN-2019','DD-MON-YYYY'),'Sunshine Plazza
#4-567 S891011', sysdate-(1.5*365), 10124, 'AVAILABLE', 'EXPERT');