2013-06-10 2 views
1

참여가 포함 된 트리거를하고 싶습니다.참여가 포함 된 트리거가 포함되어 있습니다.

내가 비활성 일 것으로 표시되면 기계공을 삽입 할 수 없도록해야합니다. 나는 활성 또는 비활성 될 수있는 MecActiv라는 속성을 가진 테이블을 가진 machanic 테이블을 가지고 있으며, 또한 테이블 메 케닉에 외래 키를 가지고있는 reparation이라는 테이블을 가지고있다. 메카닉의이 속성이 비활성 인 경우 해당 메 커닉은 테이블 보상에 들어갈 수 없으므로 조인과 함께 트리거가 필요하므로 어떻게 할 수 있는지 발견 할 수 없습니다.

감사합니다.

P.S : 당신이 실제 DB 스키마를 게시하지 않았지만 난 여기가 간다, MySQL의

+0

두 테이블의 질문 및 게시 테이블 구조를 편집하십시오. – peterm

답변

0

의 코드가 필요합니다.

귀하의 경우에는 JOIN이 필요하지 않습니다. 트리거는 기본적으로 삽입 된 ID와 정비사 (mecactiv = 0) 비활성이며, 그것은 NULLNOT NULL 제약 조건을 위반 mechanic_id에 할당하는 경우에 해당 보이는 무엇을이

CREATE TRIGGER tg_reparation_insert 
BEFORE INSERT ON reparation 
FOR EACH ROW 
    SET NEW.mechanic_id = 
    (
    SELECT IF(IFNULL(mecactiv, 0) = 0, NULL, NEW.mechanic_id) 
     FROM mechanic 
    WHERE id = NEW.mechanic_id 
); 

처럼 보일 수 있습니다. 당연히 당신은 NOT NULL가 이것을 위해 보상 테이블에 제약을 가할 필요가 있습니다.

여기에 SQLFiddle 데모가 나와 있습니다. 마지막으로 주석 처리를 취소하고 INSERT을 참조하십시오.

+0

감사합니다. 나중에 자세히 보겠습니다. 인사말 – Spresno

+0

@Spresno 여러분, 환영합니다. 나는 그것이 도움이되기를 바랍니다. – peterm

관련 문제