gpt4 book ai didi

mysql - 1 个表的 3 个外键

转载 作者:行者123 更新时间:2023-11-29 13:49:57 25 4
gpt4 key购买 nike

我想向 1 个表添加 3 个外键,但 InnoDB 给出错误。我可以单独添加第一个外键,但其他两个键也会出现相同的错误。语法如下:

CREATE TABLE Lokalen(
Gebouw VARCHAR(20) not null,
Verdieping INT not null,
Lokaal VARCHAR (3) not null,
Beweging BOOLEAN,
Computer BOOLEAN,
primary key (Gebouw, Verdieping, Lokaal));

CREATE TABLE Reserveringen(
Gebouw VARCHAR(20) not null,
Verdieping INT not null,
Lokaal VARCHAR (3) not null,
Begintijd TIME not null,
Eindtijd TIME,
Datum DATE not null,
Reserveringsnummer int not null,
primary key (Reserveringsnummer),
foreign key (Gebouw) REFERENCES Lokalen(Gebouw),
foreign key (Verdieping) REFERENCES Lokalen(Verdieping),
foreign key (Lokaal) REFERENCES Lokalen(Lokaal));

希望你能帮忙:)

最佳答案

对于复合 FOREIGN KEY,语法为

FOREIGN KEY (Gebouw, Verdieping, Lokaal) 
REFERENCES Lokalen(Gebouw, Verdieping, Lokaal)

我强烈建议使用简单的代理键(如自动增量 ID),如 Localen 中的 PK 和 Reserveringen 中的 FK)。

为了避免错误:

DROP TABLE IF EXISTS Lokalen;
DROP TABLE IF EXISTS Reserveringen;

CREATE TABLE Lokalen(
Gebouw VARCHAR(20) not null,
Verdieping INT not null,
Lokaal VARCHAR (3) not null,
Beweging BOOLEAN,
Computer BOOLEAN,
primary key (Gebouw, Verdieping, Lokaal));

CREATE TABLE Reserveringen(
Gebouw VARCHAR(20) not null,
Verdieping INT not null,
Lokaal VARCHAR (3) not null,
Begintijd TIME not null,
Eindtijd TIME,
Datum DATE not null,
Reserveringsnummer int not null,
primary key (Reserveringsnummer),
FOREIGN KEY (Gebouw, Verdieping, Lokaal)
REFERENCES Lokalen(Gebouw, Verdieping, Lokaal));

代理键的方式

DROP TABLE IF EXISTS Lokalen;
DROP TABLE IF EXISTS Reserveringen;

CREATE TABLE Lokalen(
Id Int Not null auto_increment PRIMARY KEY,
Gebouw VARCHAR(20) not null,
Verdieping INT not null,
Lokaal VARCHAR (3) not null,
Beweging BOOLEAN,
Computer BOOLEAN);

CREATE TABLE Reserveringen(
Id Int not null auto_increment PRIMARY KEY,
LokalenId Int not null,
Begintijd TIME not null,
Eindtijd TIME,
Datum DATE not null,
Reserveringsnummer int not null,

FOREIGN KEY (LokalenId)
REFERENCES Lokalen(Id));

关于mysql - 1 个表的 3 个外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16836194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com