繁体   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