각 직원이 다른 직원의 fk로 표시되는 관리자 (oracle SQL)가있는 테이블이 있습니다. 직원을 삭제할 때 관리자 필드에 자신의 키가있는 모든 직원이 관리자를 null (또는 -1 또는 예약 된 값)로 변경하는 트리거를 만들고 싶습니다. 현재 코드에서 무엇이 잘못되었는지 알아 내는데 어려움을 겪고 있습니다.오라클 트리거시 컴파일 오류
편집 : 나는 대부분의 코드를 수정했으며, 잘못된 길로 가고있었습니다. 나는 제안 된 ON DELETE 옵션을 사용했으며 이제는 모든 것이 잘 동작한다. 내 코드는 다음과 같습니다.
CREATE TABLE EmployeeA
(
employeeID integer,
firstName varchar (255),
lastName varchar (255),
phone integer,
jobTitle varchar (255),
payGrade integer,
fk_EmployeeemployeeID integer,
PRIMARY KEY(employeeID),
FOREIGN KEY(fk_EmployeeemployeeID) REFERENCES EmployeeA (employeeID) ON DELETE SET NULL
);
INSERT INTO EMPLOYEEA VALUES (1, null, 'Powell', 0, 'President', 100, 1);
INSERT INTO EMPLOYEEA VALUES (2, null, 'Hicke', 0, 'Dean (Natural Science)', 100, 1);
INSERT INTO EMPLOYEEA VALUES (3, null, 'Fenves', 0, 'Dean (Engineering)', 100, 1);
INSERT INTO EMPLOYEEA VALUES (4, null, 'Porter', 0, 'Chairman (Computer Science)', 100, 2);
INSERT INTO EMPLOYEEA VALUES (5, null, 'Beckner', 0, 'Chairman (Mathematics)', 100, 2);
INSERT INTO EMPLOYEEA VALUES (6, null, 'Miranker', 0, 'Professor (Computer Science)', 100, 4);
INSERT INTO EMPLOYEEA VALUES (7, null, 'Mok', 0, 'Professor (Computer Science)', 100, 4);
DELETE FROM employeeA WHERE lastName = 'Porter';
로 설정됩니다 오라클은 당신이 그것을에 트리거 같은 테이블을 업데이트 할 수 없습니다 뿌려줍니다. 왜 새 레코드를 업데이트하지 않습니까? –
우리는 새 레코드에 신경 쓰지 않아야합니다. 새 레코드는 새 관리자 행이지만 관리자에게보고하는 직원이 관리자 필드를 null로 설정해야합니다. – zaloo
방아쇠를 사용해야하는 숙제입니까? 아니면 외래 키의'on delete' 속성을 사용할 수 있습니까? –