【问题标题】:Adding Composite Foreign Key添加复合外键
【发布时间】:2013-09-26 05:09:06
【问题描述】:

我在向 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 尚不存在。

对于这篇冗长的帖子,我深表歉意。任何帮助将不胜感激。

谢谢, 詹姆斯

【问题讨论】:

  • ActivityLog 表是否包含 ActivityLogTypeSubType 中不可用的 (ActivityLogType, ActivityLogSubType) 值
  • 你已经有约束FK_ActivityLog_ActivityLogTypeSubType

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


【解决方案1】:

您是否已验证数据以匹配 FK 逻辑?

【讨论】:

  • 谢谢...这就是问题所在!添加缺少的参考数据修复了一切。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-03
  • 2020-07-09
相关资源
最近更新 更多