添加复合外键

时间:2013-09-20 18:03:50

标签: sql sql-server-2008 foreign-key-relationship composite-key

我在向SQL 2008添加外键约束时遇到问题,该外键约束基于另一个表中的复合主键。我已根据这里的一些帖子遵循了一些指示,但未能让它发挥作用。

我有两张桌子:

CREATE TABLE [Staging].[ActivityLog](
    [ActivityLogId] [int] IDENTITY(1,1) NOT NULL,
        ...
    [ActivityLogType] [varchar](10) NOT NULL,
    [ActivityLogSubType] [varchar](10) NOT NULL,
CONSTRAINT [PK_ActivityLog] PRIMARY KEY CLUSTERED 
(
    [ActivityLogId] ASC
))

CREATE TABLE [Staging].[ActivityLogTypeSubType](
    [ActivityLogType] [varchar](10) NOT NULL,
    [ActivityLogSubType] [varchar](10) NOT NULL,
CONSTRAINT [PK_ActivityLogTypeSubType] PRIMARY KEY CLUSTERED 
(
    [ActivityLogType] ASC,
    [ActivityLogSubType] ASC
))

GO

我正在尝试添加这样的外键:

ALTER TABLE Staging.ActivityLog
    ADD CONSTRAINT FK_ActivityLog_ActivityLogTypeSubType
    FOREIGN KEY(ActivityLogType, ActivityLogSubType)
    REFERENCES Staging.ActivityLogTypeSubType(ActivityLogType, ActivityLogSubType)

我收到此错误:

The ALTER TABLE statement conflicted with the FOREIGN KEY constraint   "FK_ActivityLog_ActivityLogTypeSubType". The conflict occurred in database "HMDB_DEV", table "Staging.ActivityLogTypeSubType".

我已经确认此FK尚不存在。

我为冗长的帖子道歉。任何帮助将不胜感激。

谢谢, 詹姆斯

1 个答案:

答案 0 :(得分:0)

您是否验证了与FK逻辑匹配的数据?