簡體   English   中英

創建SQL Server表關系的問題

[英]Issues with creating SQL Server table relationships

我有2張桌子。

第一表:

create table abc
(
    AId  INT IDENTITY(1,1),
    Name NVARCHAR(50),
    EMP NVARCHAR(50)

    CONSTRAINT PK_abc PRIMARY KEY (AId, Name)
)

第二張表為:

create table def
(
    AId  INT,
    Comment NVARCHAR(50)

    constraint FK_aid FOREIGN KEY (AId) references abc (AId)
)

這將引發錯誤:

在引用表“ abc”中沒有與外鍵“ FK_aid”中的引用列列表匹配的主鍵或候選鍵。

所以我更新為:

create table def
(
    AId  INT,
    Name NVARCHAR(50),
    Comment NVARCHAR(50)

    constraint FK_AID FOREIGN KEY (AId, Name) references abc (AId, Name)
)

但這引發了另一個錯誤:

在列級FOREIGN KEY約束表'def'中指定了多個鍵。

不知道我在這里想念什么。

- -更新 - -

很抱歉給模糊的例子。 我在這里很難解釋我的問題。 我已附上我的問題的屏幕截圖。 通過連接到3個表,這顯示了我期望的最終輸出。 從輸入表單填充3個表的數據的位置。

我試圖以一種清晰的方式提供。 讓我知道您是否需要更多輸入。

出席者: https ://imgur.com/a/jfFS6

謝謝

您有一個身份列。 使用它作為主鍵:

create table abc (
    AId  INT IDENTITY(1,1) PRIMARY KEY,
    Name NVARCHAR(50),
    EMP NVARCHAR(50)
);

create table def (
    AId  INT,
    Comment NVARCHAR(50)
    constraint FK_aid FOREIGN KEY (AId) references abc (AId)
);

Name不應該在主鍵的定義中。

看起來您必須作為一個單獨的語句來執行此操作:

ALTER TABLE [dbo].[def]  WITH CHECK ADD  CONSTRAINT [FK_def_abc] FOREIGN KEY([AId], [Name])
REFERENCES [dbo].[abc] ([AId], [Name])
GO

ALTER TABLE [dbo].[def] CHECK CONSTRAINT [FK_def_abc]
GO  

但你還是應該那樣做。 身份是唯一的,應單獨將其用作主鍵。

暫無
暫無

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

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