向现有sql表添加复合外键

向现有sql表添加复合外键,sql,Sql,我有以下表格: create table x (a int primary); create table y (b int primary); create table z (c int, d int, e int); 我(稍后有意)将复合外键添加到z: alter table z add constraint c foreign key (c) references x(a) alter table z add constraint d foreign key (d) references

我有以下表格:

create table x (a int primary);
create table y (b int primary);
create table z (c int, d int, e int);
我(稍后有意)将复合外键添加到z:

alter table z add constraint c foreign key (c) references x(a)
alter table z add constraint d foreign key (d) references y(b)

是否可以在单个sql指令中将此复合外键添加到现有表中?

您不能将其创建为单个复合约束,因为它引用两个不同的表-但也可以(取决于您的DBMS)在单个sql指令中添加这两个约束(虽然我不认为这是普遍推荐的)。你可以找到或的例子

所以这是可能的:

ALTER TABLE z 
  ADD CONSTRAINT c FOREIGN KEY (c) REFERENCES x(a) 
  ADD CONSTRAINT d FOREIGN KEY (d) REFERENCES y(b)

您的示例中没有复合外键这不是一个复合约束,这是两个不同表的两个不同约束。因此,不,这是不可能的。我能添加一个跨越这两个不同表的复合约束吗?语法取决于Michael使用的DBMS-根据在ANSI/ISO SQL标准中,每个alter table语句只能添加一个fk。谢谢你们两位-我相应地编辑了答案。a_horse_和_no_name:True,这是根据他提供的语法猜测的-虽然我可能错了。jarlh:也可能是真的(我无法检查),但您的一些数据库似乎仍然允许它,例如SQL Server