MYSQL插入外键

时间:2013-05-27 08:07:02

标签: mysql sql database

如何在插入期间插入引用与另一个表的关系的外键。

我正在尝试在乐队表格中插入现有乐队的CD“duck”。

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

我的应用程序是Java,有两个类:

 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)
);

2 个答案:

答案 0 :(得分:1)

就像这样:

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

但您要使用的B_ID必须存在于表Bands中。所以你可以在插入之前检查一下

SELECT * FROM BAND WHERE BAND_ID = THEBANDID

答案 1 :(得分:1)

至于阅读您的问题,我认为您的Java类CD与类BAND缺乏关系(将其与您的数据库表相关联)。

CD类应具有BandIdBandName属性,但我强烈建议添加BandId

CD:
    String title
    int year
    int bandId

CD条记录插入数据库时​​,您不再遇到外键约束问题,并使用STORED PROCEDURES

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