MYSQL 插入外键

标签 mysql sql database

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

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

插入 CD(标题、年份)值('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)
);

最佳答案

就像这样:

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

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

SELECT * FROM BAND WHERE BAND_ID = THEBANDID

关于MYSQL 插入外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16768845/

相关文章:

sql - 加速 SQL Server 中的临时表联接

sql - 是否有更快的方法来执行此 SELECT 查询?

java - 每月更新一条数据库记录

MySQL,通过升序日期增加行计数(简单?)

c# - 关于SQl查询二

database - 如何连接到在 VM 上运行的数据库?

php - 如何在另一个sql查询的一段时间内运行一个sql查询?

python - Django ORM - 如何使用values().annotate().values()执行复杂的GROUP BY

mysql - 让 Laravel 在插入/更新时使用 MySQL 默认值

sql - 如何在 SSRS 中实现 'Not In' 过滤器?