如何在插入期间插入引用与另一个表的关系的外键。
我正在尝试在乐队表格中插入现有乐队的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)
);
答案 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
类应具有BandId
或BandName
属性,但我强烈建议添加BandId
:
CD:
String title
int year
int bandId
将CD
条记录插入数据库时,您不再遇到外键约束问题,并使用STORED PROCEDURES。
INSERT INTO CD (TITLE, YEAR, B_ID) VALUES (Param1, Param2, Param3);