sql server已忽略重复的主键的错误分析

  在数据的建表中,一般进行下列的语句进行数据表的建立。如下:

  

  CREATE TABLE [dbo].[RMS_FACRPT_RVOK] (
      [ID] bigint NOT NULL IDENTITY(1,1) ,
      [SRCMSGDATE] datetime2(7) NOT NULL DEFAULT (getdate()) ,
      [USERID] varchar(7) COLLATE Chinese_PRC_CI_AS NOT NULL DEFAULT '' ,
      [ECID] int NOT NULL DEFAULT ((0)) ,
      [PTCODE] varchar(10) COLLATE Chinese_PRC_CI_AS NOT NULL DEFAULT '' ,
      [PTMSGID] bigint NOT NULL DEFAULT ((0)) ,
      [LOCALGATENO] int NOT NULL DEFAULT ((0)) ,
      [PHONE] varchar(22) COLLATE Chinese_PRC_CI_AS NOT NULL DEFAULT ('ERRPHONE') ,
      [RECVRPTTM] datetime2(7) NOT NULL DEFAULT (sysdatetime()) ,
      [ERRORCODE] varchar(8) COLLATE Chinese_PRC_CI_AS NOT NULL DEFAULT '' ,
      [RMSRPTTYPE] tinyint NOT NULL DEFAULT ((0)) ,
      [SIMLTDTYPE] tinyint NOT NULL DEFAULT ((0)) ,
      CONSTRAINT [PK_RMS_FACRPT_RVOK] PRIMARY KEY ([ID])
    )
      ON [PRIMARY]
    GO

    

    CREATE INDEX [IDX_RMS_FACRPT_RVOK_PTMSGID] ON [dbo].[RMS_FACRPT_RVOK]              //PTMSGID是唯一的索引
      ([PTMSGID] ASC)
    ON [PRIMARY]
    GO

  如上可以看到,primary  key对应的是ID(自增的ID),一般不会重复的。如果将该ID进行如下图的设制:

    sql  server已忽略重复的主键的错误分析

 

  如果出现 ID冲突的话(也就是强行的置为重复的话), sql  server会报"已忽略重复的主键"。如果你程序入库的时候报”已忽略重复的主键“,但是这绝对不是这地方引起的,因为ID这个是自增的值 ,在数据库中是不存在重复的。那么这情况是怎么导致的呢?

再回头看下如上,我这设了一个唯一的索引IDX_RMS_FACRPT_RVOK_PTMSGID(和上图不符),我只要在该唯一的索引的属性这里,我再设置该值 索引为”已忽略重复的主键“,那么当PTMSGID这个字段的值重复的时候,数据库的日志就会报出”已忽略重复的主键"这样的错误!!!

上一篇:Docker 安装Confluence


下一篇:ubuntu安装confluence