这一类的问题主要是插入数据时系统会给一个自增的序列号,但是这个自增的序列号已经存在表中,比如写入的时候数据库给的id值是10,但是表中已经有10这个id了,这个时候就会出现违反约束条件问题插入已存在的id,导致插入数据失败,可以查询当前插入的序列号确认是不是这类问题。有时候会出现插入第一次失败多执行几次就成功,大多数也是这个问题引起的。解决方法如下。
1、查看当前插入的序列号
SELECT IDENT_CURRENT('TABLE_NAME');
2、查看表中最大的id值为多少
SELECT MAX(id) from TABLE_NAME;
3、修改自增序列号大于当前表中最大的id值
DBCC CHECKIDENT (TABEL_NAME, RESEED,number);
修改之后下一次插入数据就是拿到最大的ID后面的一位数。
例子
USE test
GO
DECLARE @dd int
SET @dd = (SELECT MAX(id)+1 AS dd from table_test);
DBCC CHECKIDENT (table_test, RESEED, @dd);
GO