mysql新手,感谢任何帮助。从mysql自动增量主键分配外键
我有三个表格:organizations
,locations
和shows
。我想使用organizations
和locations
的自动增量分配主键作为shows
中的外键。当我为该表输入值时,代码mysql如何自动为shows
拉外键?或者,当我在shows
中输入每行的值时,根据自动递增的主键自动分配的值,手动分配是最佳做法吗?
下面是我创建的所有三个表,都organizations
和locations
已插入所有条目(并通过自动增量分配因而主键):
组织
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)
);
地点
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)
);
个
显示
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;
表“组织”和“位置”是否有另一个唯一的列值,您在将某个记录插入到show中时知道?例如,'locations.name'?如果不是,你怎么知道你想链接到哪个位置和组织? – trincot
是的,organizational_name和locations_name位于Excel中,对应于表“shows”中的行。 – user2337225
看看'LAST_INSERT_ID()'函数。在使用自动增量插入表格后,它会返回分配的ID。当你用外键插入到表中时,可以使用它。 – Barmar