2017-12-16 6 views
-1

내가 MySQL의 새로운이야 간단한 데이터베이스를 만들기 위해 내가 3 개 테이블에 대한 다음과 같은 사양을했습니다 : 모두 대표 회의 테이블에있는 정보는 원업데이트 테이블

DROP TABLE IF EXISTS representative; 
CREATE TABLE representative(
    id_representative VARCHAR(15), 
    name VARCHAR(15), 
    PRIMARY KEY(id_representative) 
)ENGINE=InnoDB DEFAULT CHARSET=latin1; 

DROP TABLE IF EXISTS congress; 
CREATE TABLE congress(
    id_congress INT, 
    PRIMARY KEY(id_congress) 
)ENGINE=InnoDB DEFAULT CHARSET=latin1; 


DROP TABLE IF EXISTS representative_congress; 
CREATE TABLE representative_congress(
    id_ai INT AUTO_INCREMENT, 
    id_representative VARCHAR(15), 
    id_congress INT, 
    party VARCHAR(2), 
    PRIMARY KEY(id_ai), 
    FOREIGN KEY(id_congress) REFERENCES congress(id_congress) ON UPDATE CASCADE, 
    FOREIGN KEY(id_representative) REFERENCES representative(id_representative) ON UPDATE CASCADE 
)ENGINE=InnoDB DEFAULT CHARSET=latin1; 

을 일단 삽입되면 (두 개의 다른 대표자에 대해 두 개의 동일한 id_representative를 갖지 않거나 두 개의 다른 총회에 대해 두 개의 동일한 id_congress를 갖지 않을 것입니다). 그러나 representative_congress 테이블은 동일한 회의 (2 년의 시간 간격)에서 주어진 대표가 당사자 (또는 앞으로 테이블에 추가 될 수있는 더 많은 필드)를 변경하는 경우에 사용됩니다. 동일한 의회에 대해 다른 당사자 또는 더 많은 분야에 연결된 동일한 id_representative를 보유하십시오. 그걸 염두에두고

, 나는이 개 질문이 :

  • 내가 테이블의 사양이나 삽입 쿼리에 어떤 제약 조건을 추가해야합니까? 테이블/데이터베이스가 삭제 된 경우에만 정보가 테이블에 한 번 추가됩니다.

  • 한 번의 INSERT 쿼리로 어떤 종류의 계단식 명령처럼 두 테이블에 속한 정보를 한 번에 삽입 할 수 있습니까? 예를 들어, 대표 및 대표 _ 회의 테이블에 속하는 id_representative. 사전에

덕분에

답변

0

제약이 좋다, 대표 회의 테이블에 대한 기본 키가 그 정보의 무결성을 보장하고, representative_congress에서 외래 키가 잘못된 관계를 가질 방지, 유일한 고려 사항 이전 테이블에 ID를 삽입하기 전에 representative_congress에 삽입 할 수 없습니다.

만 1 삽입 문 두 개 이상의 테이블에서 데이터를 삽입하는 방법은 트리거와 함께,하지만 당신은 예를 들어, 기본 삽입 또는 삽입에 대한 논리를 정의 할 필요가

CREATE TRIGGER trigger_name 
    AFTER INSERT 
    ON representative FOR EACH ROW 
    insert into representative_congress (id_representative, id_congress, party) 
    values (NEW.id_representative, 1, '01')