【发布时间】:2019-07-06 12:59:20
【问题描述】:
例如,让我们有以下表定义:
CREATE TABLE table1
(
id INT UNIQUE,
name VARCHAR(100) UNIQUE,
description VARCHAR(100),
PRIMARY KEY (id, name)
);
现在我想创建另一个表,该表将具有上述复合主键的外键。以下两种说法是否等价?
1)
CREATE TABLE table2
(
id INT PRIMARY KEY,
table1_id INT,
table1_name VARCHAR(100),
FOREIGN KEY (table1_id) REFERENCES table1(id),
FOREIGN KEY (table1_name) REFERENCES table1(name)
);
2)
CREATE TABLE table2
(
id INT PRIMARY KEY,
table1_id INT,
table1_name VARCHAR(100),
FOREIGN KEY (table1_id, table1_name) REFERENCES table1(id, name),
);
我注意到 Postgre SQL 在 1) 的情况下创建了两个 FK db 对象,在 2) 的情况下创建了一个 FK 对象。一切都会一样吗?
【问题讨论】:
-
(显然--)这是一个常见问题。在考虑发布之前,请始终在谷歌上搜索任何错误消息以及您的问题/问题/目标的许多清晰、简洁和准确的措辞,包括和不包括您的特定字符串/名称;阅读许多答案。如果您发布问题,请使用一个短语作为标题。请参阅How to Ask 和投票箭头鼠标悬停文本。 PS 这表明“没有显示任何研究工作”。
标签: sql postgresql foreign-keys one-to-many composite-primary-key