簡體   English   中英

SQL Server Management Studio不允許我為多個主鍵創建多個外鍵

[英]SQL Server Management Studio does NOT let me create multiple foreign keys to multiple primary keys

我有一個表ApplicationRegion在一個一對多的關系Translation

我想將FK從Translation.appname/isocodeApplicationRegion.appname/isocode

但是,從屏幕截圖中可以看到,這沒有用。

當FK配置窗口打開時,左側/右側顯示3列

appname
isocode
resourcekey

然后,我選擇作為父表ApplicationRegion並從FK設置中刪除了資源鍵列。

然后單擊“確定”,但隨后出現屏幕截圖中顯示的錯誤。

在此處輸入圖片說明

最終,我將其與該替代方法一起使用,並且我想知道為什么必須使用此替代方法?

  1. 從Translation.ResourceKey列中刪除PK
  2. 打開FK配置窗口
  3. 現在只有2列顯示為外鍵
  4. 我點擊確定
  5. 現在,我再次將PK添加到Translation.ResouceKey列
  6. 我將測試數據添加到所有3個表中,一切都很好。

為什么使用此解決方法?

UPDATE

哈哈...

在此處輸入圖片說明

我認為您一定在SSMS中遇到了奇怪的問題。 我能夠使用SSMS 2014創建您的架構,而沒有任何錯誤。 在添加新的FK時,它確實預填充了三個復合主鍵列。 在開始在FK中添加兩列之前,我要小心確保將它們全部清空。 也許SSMS認為空白行之一中仍然有數據。

編輯:再想一想,SSMS以緩存在編輯表時所做的任何更改而聞名。 例如,如果您要修改兩個表並同時打開兩個編輯窗口。 然后,您在一個窗口中更改PK,然后嘗試在第二個窗口中引用它,這將出錯,因為它已在第一次打開窗口時緩存了第一個表的架構。

這是我生成的DDL:

CREATE TABLE [dbo].[AppRegion](
    [appname] [nvarchar](50) NOT NULL,
    [isocode] [char](5) NOT NULL,
 CONSTRAINT [PK_AppRegion] PRIMARY KEY CLUSTERED 
(
    [appname] ASC,
    [isocode] ASC
)
) ON [PRIMARY]

CREATE TABLE [dbo].[Translation](
    [ResourceKey] [nvarchar](128) NOT NULL,
    [appname] [nvarchar](50) NOT NULL,
    [isocode] [char](5) NOT NULL,
    [text] [nvarchar](400) NULL,
 CONSTRAINT [PK_Translation] PRIMARY KEY CLUSTERED 
(
    [ResourceKey] ASC,
    [appname] ASC,
    [isocode] ASC
)
) ON [PRIMARY]

ALTER TABLE [dbo].[Translation]   ADD  CONSTRAINT [FK_Translation_AppRegion] FOREIGN KEY([appname], [isocode])
REFERENCES [dbo].[AppRegion] ([appname], [isocode])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM