2013-05-27 161 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);