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