필드 초대가있는 테이블 PET에 대한 트리거를 만들고 테이블 PEOPLE의 Phone이라는 필드 값을 기준으로 Yes
또는 No
으로 바꿉니다. 전화 번호가 null이 아니면 및 PET 테이블의 다른 필드 중 일부가 유효한 값을 가지며 null이 아닌 경우 Invitation 필드의 값이 Yes
이됩니다.PLSQL ORACLE : 트리거가있는 오류
내가 할 수 있지만 나중에 내 테이블을 업데이트하고 필드 중 하나를 null로 설정하려고하면 문제가 발생합니다. 초대장 필드의 값을 No
으로 업데이트하지 않습니다. 그래서 지금은 초대장 값을 변경할 수 있도록 필수 필드가 null이 아닌지 확인하는 PET 테이블 자체에 대한 트리거를 만드는 중입니다.
그러나 문제는 사용자가 PEOPLE 테이블로 이동하기 전에 PET 테이블에 데이터를 입력해야한다는 것입니다. 그래서 내 방아쇠 PET 내 데이터를 삽입 할 때 어떤 값을 가져올 수 없습니다. 여기
내가 방아쇠를 위해 한 것입니다 : 사람 또는 가족 테이블에 값이 아직 없습니다 :
create or replace trigger Phone_check
before insert or update on PETS
for each row
DECLARE
SELECT phone INTO v_phone
FROM PEOPLE
INNER JOIN Family ON PEOPLE.ID=FAMILY.ID
INNER JOIN PETS ON FAMILY.ID=PETS.ID
WHERE PETS.ID=:NEW.ID;
IF :NEW.NAME IS NOT NULL
AND :NEW.AGE IS NOT NULL
AND v_phone IS NOT NULL THEN
:NEW.INVITATION:='Yes';
ELSIF :NEW.NAME IS NULL
OR :NEW.AGE IS NULL
AND v_phone IS NULL THEN
:NEW.INVITATION:='No';
END IF;
END;
나는이 트리거 문제가 무엇인지 얻는다. 그러나 PET 테이블이 첫 번째 테이블로 간주됩니다. 이 문제를 어떻게 해결해야합니까? 필요한 값이 이미 다른 테이블에 이미있는 경우에만이 트리거를 활성화하는 방법이 있습니까? 나는 정말로 혼란 스럽다.
* "문제가. 사용자가 사람들의 테이블쪽으로 가기 전에 PET 테이블에 데이터를 입력하는 것입니다"* 그것은 바로 당신의 문제입니다. 애완 동물은 사람들에게 속하지만, 다른 방법은 아닙니다. [101 달마 시안] (https://en.wikipedia.org/wiki/One_Hundred_and_One_Dalmatians)을 모델로하지 않는 한. – APC
@ APC 네가해야 할 임무는 지옥처럼 이상합니다. 그들은 다른 것보다 먼저 PET에 데이터를 입력하기를 원합니다. 그리고 실제로 모든 것이 제공 될 때 초대 상태를 '예'로 변경할 수 있지만 결국에는 PET 테이블의 필수 필드 중 하나에서 값을 변경하고 설정합니다. 그것 null로, 초대장은 여전히 예로 설정되어 있습니다. 조건에 따라 트리거를 활성화하는 방법이 있습니까? – Kim