2013-05-27 2 views
0

다른 테이블과의 관계를 참조하는 삽입 중에 외래 키를 삽입하려면 어떻게해야합니까?외래 키가있는 MYSQL 삽입

밴드 테이블에 기존 밴드가있는 CD '오리'를 삽입하려고합니다.

INSERT INTO CD (TITLE, YEAR) VALUES ('Ducks', 2013);

내 응용 프로그램 자바에 2 종류가 있습니다

Band class: 
    String name 
    int year 
    ArrayList<String> members 

CD class: 
    String title 
    int year 

SQL 테이블

다만이 같은
CREATE TABLE BAND 
(
    BAND_ID INT NOT NULL AUTO_INCREMENT, 
    NAME VARCHAR(50), 
    YEAR INT, 
    PRIMARY KEY(BAND_ID) 
); 

CREATE TABLE CD 
(
    CD_ID INT NOT NULL AUTO_INCREMENT, 
    TITLE VARCHAR(50), 
    YEAR INT, 
    B_ID INT, 
    PRIMARY KEY(CD_ID), 
    FOREIGN KEY(B_ID) REFERENCES BAND(BAND_ID) 
); 

CREATE TABLE MEMBER 
(
    MEMBER_ID INT NOT NULL AUTO_INCREMENT, 
    NAME VARCHAR(50), 
    B_ID INT, 
    PRIMARY KEY(MEMBER_ID), 
    FOREIGN KEY(B_ID) REFERENCES BAND(BAND_ID) 
); 
+0

당신은 무엇을 하려는지 명확히 할 수 있습니까? 존재하지 않는 대역의 CD를 넣으시겠습니까? – Nick

+0

기존 밴드가있는 CD를 넣으십시오. 죄송합니다. – user1352609

답변

1

:

INSERT INTO CD (TITLE, YEAR, B_ID) VALUES ('Ducks', 2013, THEBANDID); 

하지만 B_I을 당신이 사용하고자하는 것은 테이블 밴드에 존재해야합니다. 당신이 지금까지 질문을 읽는 등의 삽입을

SELECT * FROM BAND WHERE BAND_ID = THEBANDID 
1

을하기 전에 그래서 당신이 확인할 수 있습니다, I 클래스 BAND와 자바 클래스 CD 부족 관계 (데이터베이스 테이블과 관련된) 생각합니다. 데이터베이스에 CD 기록을 삽입 할 때

CD: 
    String title 
    int year 
    int bandId 

, 당신은 외래 키 제약 조건에 문제가되지 않습니다 : 내가 강하게 BandId 추가하는 것이 좋습니다하지만

CD 클래스는 BandId 또는 BandName 속성을 가져야한다 더 이상 사용하지 않고 STORED PROCEDURES을 사용하십시오.

INSERT INTO CD (TITLE, YEAR, B_ID) VALUES (Param1, Param2, Param3);

관련 문제