2013-10-15 2 views
0

새 팀을 추가하거나 삭제하거나 업데이트하면 countTeams에서 업데이트를 트리거하고 기본 수 및 countNA 등을 해당하는 국적으로 변경하도록 mySQL에서 트리거를 설정하려고합니다. 팀.mySQL 트리거 업데이트 수

CREATE TABLE countTeams(
    base integer PRIMARY KEY, 
    countNA integer, 
    countEU integer, 
    countCN integer, 
    countSEA integer, 
    countINT integer, 
    countCIS integer 
    ); 
CREATE TABLE Team(
    TeamName varchar (30) PRIMARY KEY, 
    Captain varchar (30), 
    Nationality varchar (5) NOT NULL, 
    CreationDate date, 
    Description varchar (50), 
    foreign key(Captain) references Emails(Username) 
    ); 

내 실패 트리거 시도 :

여기 내 테이블입니다.

CREATE TRIGGER teamsDown 
AFTER INSERT ON Team FOR EACH ROW 
UPDATE countTeams 
BEGIN 
SET base = (base - 1) 
IF Team.Nationality= "NA" THEN 
    UPDATE countTeams 
    SET countNA = (countNA - 1) 
ELSEIF Team.Nationality = "EU" THEN 
    UPDATE countTeams 
    SET countEU = (countEU - 1) 
IF Team.Nationality = "CN" THEN 
    UPDATE countTeams 
    SET countCN = (countCN - 1) 
IF Team.Nationality = "SEA" 
    UPDATE countTeams 
    SET countSEA = (countSEA - 1) 
IF Team.Nationality = "INT" 
    UPDATE countTeams 
    SET countINT = (countINT - 1) 
IF Team.Nationality = "CIS" 
    UPDATE countTeams 
    SET countCIS = (countCIS - 1) 
END; 

답변

5

먼저 countTeams 테이블을 변경하십시오.

CREATE TABLE countTeams(
    base int auto_increment PRIMARY KEY, 
    nationality varchar(5), 
    how_many int DEFAULT 0 
); 

그런 다음 필요한 데이터를 입력하십시오.

INSERT INTO countTeams (nationality) VALUES 
('NA'), 
('EU'), 
('CN'), 
('SEA'), 
('INT'), 
('CIS'); 

이제 삽입 용 트리거와 삭제 용 트리거를 만들어야합니다. 업데이트로 인해 아무 것도 바뀌지 않으며 왜 트리거를 만들지 모릅니다. 아니면 팀의 국적이 변경 될 수 있습니까?

DELIMITER $$ 
CREATE TRIGGER inc_countTeams AFTER INSERT ON Team 
FOR EACH ROW 
BEGIN 
    UPDATE countTeams SET how_many = how_many + 1 WHERE nationality = NEW.nationality; 
END $$ 
DELIMITER ; 

DELIMITER $$ 
CREATE TRIGGER dec_countTeams AFTER DELETE ON Team 
FOR EACH ROW 
BEGIN 
    UPDATE countTeams SET how_many = how_many - 1 WHERE nationality = OLD.nationality; 
END $$ 
DELIMITER ; 

는 편집 :

DELIMITER $$ 
CREATE TRIGGER dec_countTeams AFTER UPDATE ON Team 
FOR EACH ROW 
BEGIN 
    UPDATE countTeams SET how_many = how_many - 1 WHERE nationality = OLD.nationality; 
    UPDATE countTeams SET how_many = how_many + 1 WHERE nationality = NEW.nationality; 
END $$ 
DELIMITER ; 
+0

감사합니다 아주 많이, 그리고 네 팀의 국적은 나중에 변경할 수 있습니다. – Bazoozoos

+0

와우 .. 정확히 내가 필요로하는 .. 멋진 .. – faruk

관련 문제