我做了一个INSERT的存储过程!主键T_ID设为自动增长,可当在执行过程中,当T_ID到达11时,就报以下错误:
违反了 PRIMARY KEY 约束 'PK_USER'。不能在对象 'T_10' 中插入重复键。
语句已终止。
存储过程如下:(请问怎么修改呢?)LTER  PROCEDURE T_10_INSERT   -- @T_ID VARCHAR(150)=NULL
 @U_ID VARCHAR(20)
, @T_TITLE VARCHAR(50)
, @T_TEXT VARCHAR(50)='AAAAAAA'
, @T_DATE DATETIME='2006-10-20'AS
DECLARE   @SQL VARCHAR(1000)
   ,@T_ID VARCHAR(150)
SET @T_ID=ISNULL((SELECT MAX(T_ID) FROM T_10  ),0)+1
INSERT T_10 ( T_ID
 ,U_ID
,T_TITLE
,T_TEXT
,T_DATE
)
VALUES ( @T_ID
, @U_ID
,@T_TITLE
,@T_TEXT
,@T_DATE
) SELECT RESULT = 1

解决方案 »

  1.   

    不重复啊,T_ID为11时就不能插入!这时表里有T_ID为1-10,没有T_ID=11的值,对了我的T_ID是nvarchar的
      

  2.   

    是的,是varchar的,我们头说的要设成varchar的
    是不是这里出的问题?
      

  3.   

    T_ID是nvarchar,设成自动增长,肯定不行,还是设成int吧
      

  4.   

    INSERT T_10 (,U_ID
    ,T_TITLE
    ,T_TEXT
    ,T_DATE
    )
    VALUES ( @U_ID
    ,@T_TITLE
    ,@T_TEXT
    ,@T_DATE
    )
    是自动增长的字段就不需要赋值。。
      

  5.   

    SET @T_ID=ISNULL((SELECT MAX(T_ID) FROM T_10  ),0)+1
    这个值是11?
      

  6.   

    SET @T_ID=ISNULL((SELECT MAX(T_ID) FROM T_10  ),0)+1
    -->
    SET @T_ID=ISNULL(cast((SELECT MAX(T_ID) FROM T_10  ) as int),0)+1