新的mysql,感谢任何帮助 .
我有三个表: organizations
, locations
和 shows
. 我想在 shows
中使用自动增量分配的主键 organizations
和 locations
作为外键 . 当我输入这个表的值时,代码mysql如何自动拉出 shows
的外键?或者,根据自动递增的主键自动分配的内容,当我在 shows
中输入每行的值时,手动分配是最佳做法吗?
以下是我创建所有三个表的方法, organizations
和 locations
都已插入所有条目(因此通过自动增量分配主键):
organizations
CREATE TABLE organizations(
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name VARCHAR(64) NOT NULL,
sex CHAR(1) NOT NULL,
start_year YEAR NOT NULL,
end_year YEAR NOT NULL,
notes LONGTEXT,
PRIMARY KEY (id)
);
locations
CREATE TABLE locations (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name VARCHAR(64) NOT NULL,
address_name VARCHAR(64) NOT NULL,
address_lat FLOAT(10,6) NOT NULL,
address_long FLOAT(10,6) NOT NULL,
type VARCHAR(64) NOT NULL,
notes LONGTEXT,
PRIMARY KEY (id)
);
shows
CREATE TABLE shows (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
organization_id MEDIUMINT NOT NULL,
location_id MEDIUMINT NOT NULL,
date DATE NOT NULL,
cost DECIMAL (2,2),
money_raised DECIMAL (6,2),
charity VARCHAR(64),
audience_size MEDIUMINT,
band VARCHAR(64),
blackface CHAR(1),
drag CHAR(1),
notes LONGTEXT,
PRIMARY KEY (id)
);
ALTER TABLE shows
ADD CONSTRAINT FK1_shows
FOREIGN KEY (organization_id) REFERENCES organizations(id)
ON UPDATE CASCADE
ON DELETE CASCADE;
ALTER TABLE shows
ADD CONSTRAINT FK2_shows
FOREIGN KEY (location_id) REFERENCES organizations(id)
ON UPDATE CASCADE
ON DELETE CASCADE;
1 回答
您可以使用insert语句,根据名称值从其他表中选择id值,如下所示:
当然,您也会为其他一些列插入值 .