如何在主键列中插入重复值?

新手上路,请多包涵

我有一个第一列有主键的表,但是当我看到这个表的可用数据时,我发现重复的记录包括主键数据。我想知道怎么可能? SQL Server 2008 中的主列是否有重复数据?

在此处输入图像描述

         SET ANSI_NULLS ON
        GO

        SET QUOTED_IDENTIFIER ON
        GO

        SET ANSI_PADDING ON
        GO

        CREATE TABLE [dbo].[DemoTbl](
            [ProcedureId] [int] NOT NULL,
            [ProcedureName] [nvarchar](100) NOT NULL,
            [VersionNo] [char](5) NULL,
            [PublishDate] [datetime] NULL,
            [PublishUser] [varchar](50) NULL,

            [SpecialtyId] [int] NOT NULL,
            [ProcedureNumber] [varchar](20) NULL,
            [PowerpointName] [nvarchar](100) NULL,
            [Duration] [int] NOT NULL,

            [LanguageId] [int] NOT NULL,

            [TierId] [smallint] NOT NULL,
            [PrintPdf] [bit] NULL,
            [PresentationModeId] [tinyint] NULL,
         CONSTRAINT [pk_DemoTbl] PRIMARY KEY CLUSTERED
        (
            [ProcedureId] ASC,
            [LanguageId] ASC
        )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
        ) ON [PRIMARY]

        GO

        SET ANSI_PADDING OFF
        GO

        ALTER TABLE [dbo].[DemoTbl]  WITH CHECK ADD FOREIGN KEY([PresentationModeId])
        REFERENCES [dbo].[DemoTbl] ([PresentationModeId])
        GO

        ALTER TABLE [dbo].[DemoTbl]  WITH CHECK ADD  CONSTRAINT [FK_DemoTbl_Specialty] FOREIGN KEY([SpecialtyId])
        REFERENCES [dbo].[Specialty] ([SpecialtyId])
        GO

        ALTER TABLE [dbo].[DemoTbl] CHECK CONSTRAINT [FK_DemoTbl_Specialty]
        GO

        ALTER TABLE [dbo].[DemoTbl]  WITH CHECK ADD  CONSTRAINT [FK_DemoTbl_TierMaster] FOREIGN KEY([TierId])
        REFERENCES [dbo].[TierMaster] ([TierId])
        GO

        ALTER TABLE [dbo].[DemoTbl] CHECK CONSTRAINT [FK_DemoTbl_TierMaster]
        GO

        ALTER TABLE [dbo].[DemoTbl] ADD  CONSTRAINT [DF_DemoTbl_CreationDate]  DEFAULT (getdate()) FOR [CreationDate]
        GO

        ALTER TABLE [dbo].[DemoTbl] ADD  CONSTRAINT [DF_DemoTbl_ModifiedDate]  DEFAULT (getdate()) FOR [ModifiedDate]
        GO

        ALTER TABLE [dbo].[DemoTbl] ADD  CONSTRAINT [DF_DemoTbl_IsActive]  DEFAULT ((1)) FOR [IsActive]
        GO

        ALTER TABLE [dbo].[DemoTbl] ADD  CONSTRAINT [DF_DemoTbl_LanguageId]  DEFAULT ((1)) FOR [LanguageId]
        GO

        ALTER TABLE [dbo].[DemoTbl] ADD  CONSTRAINT [DF_DemoTbl_ManageContent]  DEFAULT ('false') FOR [ManageContent]
        GO

        ALTER TABLE [dbo].[DemoTbl] ADD  CONSTRAINT [DF__Procedure__Print__1B14C01D]  DEFAULT ((1)) FOR [PrintPdf]
        GO

原文由 arun 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 788
1 个回答

对于 PK 约束,它在定义的 PK 上创建一个唯一索引(集群/非集群)。如果我们在加载之前禁用包含 PK 唯一索引的索引,那么我们可以在列中插入重复的 PK,因为 PK 约束被禁用。因此,在禁用索引时,请避免 PK 索引不禁用“is_primary_key=0 禁用所有其他索引”

原文由 KashifKiani 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进