2013-05-27 191 views
0

如何在插入過程中插入引用與其他表的關係的外鍵。MYSQL插入外鍵

我想插入與現有樂隊在樂隊表中的CD'duck'。

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

我的應用程序是在Java中,有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你想使用的D必須存在於表中。所以,你可以檢查你做之前插入

SELECT * FROM BAND WHERE BAND_ID = THEBANDID 
1

至於閱讀你的問題,我覺得跟BAND類Java類CD缺乏關係(與數據庫中的表與它)。

CD類應該有BandIdBandName財產,但我強烈建議添加BandId

CD: 
    String title 
    int year 
    int bandId 

當插入CD記錄到數據庫中,你會不會有外鍵約束任何問題不再,並使用STORED PROCEDURES

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