首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建候选密钥

如何创建候选密钥
EN

Stack Overflow用户
提问于 2021-03-23 04:46:24
回答 1查看 656关注 0票数 0

表1

代码语言:javascript
复制
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

代码语言:javascript
复制
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)

EN

回答 1

Stack Overflow用户

发布于 2021-03-23 09:12:10

将Rot_ID和Rot_Code合并作为主键的原因是什么?

我建议重新设计您的桌子如下:

代码语言:javascript
复制
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列,则必须使它在父表中是唯一的,如下所示:

代码语言:javascript
复制
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]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66757408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档