如何在Access中创建多字段外键?

时间:2015-08-10 12:07:04

标签: sql ms-access ms-access-2010 alter-table

我找到了this教程,其中说这个问题可以通过这种方式解决:

多字段约束:

CONSTRAINT name     {PRIMARY KEY (primary1[, primary2 [, …]]) |     
UNIQUE (unique1[, unique2 [, …]]) |     
NOT NULL (notnull1[, notnull2 [, …]]) |     
FOREIGN KEY [NO INDEX] (ref1[, ref2 [, …]]) 
REFERENCES foreigntable [(foreignfield1 [, foreignfield2 [, …]])]    
[ON UPDATE CASCADE | SET NULL]     [ON DELETE CASCADE | SET NULL]};

对于我的简化数据库:

enter image description here

我编写了这样的sql代码,它有一个想法,可以连接2个表中的2列。另外,我想在S2T表的2个字段上添加唯一约束:

alter table S2T add constraint TargetUniqKey
UNIQUE(target_table_name, target_column_name) 
Foreign key(TableName, ColumnName) references TargetColumns 
on update cascade on delete cascade;

但是我收到错误,说Alter table构造中有语法错误,请帮忙

1 个答案:

答案 0 :(得分:0)

这应该是应该的,似乎是官方教程令人困惑:

alter table S2T add constraint TargetUniqKey
Foreign key(target_table_name, target_column_name) 
References TargetColumns(TableName, ColumnName) ;

提到的唯一性可以通过这种方式实现(可能有助于创建1对1连接)

ALTER TABLE S2T ADD 
CONSTRAINT Mykey
UNIQUE (target_table_name, target_column_name);