表1
CREATE TABLE [dbo].Menu_Dates_Rot_Mast
(
[Rot_ID] [int] IDENTITY (1, 1) NOT NULL ,
[Rot_Code] [varchar](70) NOT NULL,
[Menu_DT] int NOT NULL,
PRIMARY KEY ([Rot_ID], [Rot_Code])
) ON [PRIMARY]表2
CREATE TABLE [dbo].[Menu_Dates_Mast]
(
[ID] [int] IDENTITY (1, 1),
[Menu_ID] AS ('DT' + RIGHT(('00000' + CONVERT(varchar, [ID])), 6)) PERSISTED NOT NULL,
[Menu_Cat] [varchar](30) NOT NULL,
[Menu_Modified] [datetime] NOT NULL,
[ROTATION][1](50) NOT NULL,
[Uplift_Id] [int]
FOREIGN KEY REFERENCES [AirCraft_Uplift_Mast]([UPLIFT_ID]),
[Rot_Code] [varchar](70)
FOREIGN KEY REFERENCES Menu_Dates_Rot_Mast(Rot_Code)
) ON [PRIMARY]
GO我无法创建表Menu_Dates_Mast,因为我得到了以下错误:
Msg 1776,16级,状态0,第1行
引用表Menu_Dates_Rot_Mast中没有与外键“FK__Menu_Date__Rot_C__15502E78”中的引用列列表匹配的主键或候选键
Msg 1750,16级,状态0,第1行
无法创建约束。见以前的错误
友好地建议创建Menu_Dates_Mast的语法(表2)
发布于 2021-03-23 09:12:10
将Rot_ID和Rot_Code合并作为主键的原因是什么?
我建议重新设计您的桌子如下:
CREATE TABLE [dbo].Menu_Dates_Rot_Mast
(
[Rot_ID] [int] IDENTITY (1, 1) NOT NULL ,
[Rot_Code] [varchar](70) NOT NULL,
[Menu_DT] int NOT NULL,
PRIMARY KEY ([Rot_ID])
) ON [PRIMARY]
CREATE TABLE [dbo].[Menu_Dates_Mast]
(
[ID] [int] IDENTITY (1, 1),
[Menu_ID] AS ('DT' + RIGHT(('00000' + CONVERT(varchar, [ID])), 6)) PERSISTED NOT NULL,
[Menu_Cat] [varchar](30) NOT NULL,
[Menu_Modified] [datetime] NOT NULL,
[ROTATION][1](50) NOT NULL,
[Uplift_Id] [int]
FOREIGN KEY REFERENCES [AirCraft_Uplift_Mast]([UPLIFT_ID]),
[Rot_ID] [int]
FOREIGN KEY REFERENCES Menu_Dates_Rot_Mast(Rot_ID)
) ON [PRIMARY]
GO如果这是不可能的,并且您仍然希望引用Rot_Code列,则必须使它在父表中是唯一的,如下所示:
CREATE TABLE [dbo].Menu_Dates_Rot_Mast
(
[Rot_ID] [int] IDENTITY (1, 1) NOT NULL ,
[Rot_Code] [varchar](70) NOT NULL UNIQUE,
[Menu_DT] int NOT NULL,
PRIMARY KEY ([Rot_ID], [Rot_Code])
) ON [PRIMARY]https://stackoverflow.com/questions/66757408
复制相似问题