我正试图从一个外键创建表的主键以及表本身的一个属性。
CREATE TABLE table (
attribute int,
FOREIGN KEY (foreign_attribute) REFERENCES foreign_table(foreign_attribute),
PRIMARY KEY (attribute, foreign_attribute)
);
这在某种程度上不起作用,有人能推荐一个替代解决方案并指出上面的错误吗?
附言:绝对初学者不要抨击
将外键列作为复合主键的一部分是可以的,但在任何情况下,您都需要创建该列,然后才能添加FK约束:
CREATE TABLE table (
attribute int,
foreign_attribute int REFERENCES foreign_table(foreign_attribute),
PRIMARY KEY (attribute, foreign_attribute)
);
或者,如果要选择FK约束的名称:
CREATE TABLE table (
attribute int,
foreign_attribute int,
PRIMARY KEY (attribute, foreign_attribute),
CONSTRAINT fk_foreign_table FOREIGN KEY(foreign_attribute) REFERENCES foreign_table(foreign_attribute)
);
子列必须具有与父列相同的数据类型和长度——我假设为int
。在大多数数据库中,父列在父表中必须是唯一的(或者是主键列(。