2017-10-09 18 views
0
DROP TRIGGER IF EXISTS COPILOT_ASSIGNED; 

DELIMITER // 
CREATE TRIGGER COPILOT_ASSIGNED 
    BEFORE INSERT ON crew 
    FOR EACH ROW 
BEGIN 
    IF CHAR_TRIP EXISTS AND CREW_JOB = 'Pilot' 
    THEN SET NEW.CREW_JOB = 'Copilot'; 
    END IF; 
END // 
DELIMITER ; 

INSERT INTO crew VALUES (10019, 109, 'Pilot'); 
INSERT INTO crew VALUES (10019, 106, 'Pilot'); 

SELECT * FROM crew WHERE CHAR_TRIP = 10019; 

我无法确定如何写这个触发器。我需要检查一下包机(CREW_TRIP)是否已经被分配了一个飞行员(CREW_JOB)。如果是这样,则需要将试点改为副驾驶(CREW_JOB)。我需要构建一个单一的触发器,当一个飞行员已经被分配到一个章程时,分配一个飞行员作为副驾驶员

+0

DROP TRIGGER IF EXISTS COPILOT_ASSIGNED; DELIMITER // CREATE TRIGGER COPILOT_ASSIGNED \t BEFORE INSERT ON船员 \t FOR EACH ROW BEGIN \t IF OLD.CREW_JOB = '先导' \t THEN SET NEW.CREW_JOB = '副驾驶'; \t END IF; END // \t DELIMITER; –

回答

0
DROP TRIGGER IF EXISTS COPILOT_ASSIGNED; 

DELIMITER // 
CREATE TRIGGER COPILOT_ASSIGNED 
    BEFORE INSERT ON crew 
    FOR EACH ROW 
BEGIN 
    IF EXISTS (SELECT * FROM crew WHERE CHAR_TRIP = NEW.CHAR_TRIP AND 
CREW_JOB='Pilot') 
    THEN SET NEW.CREW_JOB = 'Copilot'; 
    END IF; 
END // 
DELIMITER ; 

INSERT INTO crew VALUES (10019, 109, 'Pilot'); 
INSERT INTO crew VALUES (10019, 106, 'Pilot'); 
相关问题