[英]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.