0

如何在插入过程中插入引用与另一个表的关系的外键。

我正在尝试在乐队表中插入带有现有乐队的 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)
);
4

2 回答 2

1

就阅读您的问题而言,我认为您的 Java 类CD与类缺乏关系BAND(与您的数据库表相关)。

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

CD:
    String title
    int year
    int bandId

CD记录插入数据库时​​,您将不再有外键约束的任何问题,并使用STORED PROCEDURES

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

于 2013-05-27T08:19:49.037 回答
1

像这样:

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

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

SELECT * FROM BAND WHERE BAND_ID = THEBANDID
于 2013-05-27T08:09:55.827 回答