update table 
set outdate=getdate()
where id='0811010718' --这条语句就报错, 将截断字符串或二进制数据。而
update table 
set outdate=getdate()
where id='0802035121' --这条语句就不报错,这是为什么呢?id是主键有索引

解决方案 »

  1.   

    看看两个ID对应的记录有什么不同:
    select * from tb where  id='0811010718' 
    select * from tb where  id='0802035121' 
      

  2.   

    update table 
    set outdate=getdate()
    你定义的 OUTDATE 字段长度 比   getdate()  数值要短。
      

  3.   

    结合1,2,4楼:
    1.因为outdate设的不是datetime类型(可能是varchar(10)之类的),所以赋值的时候会截断
    2. ID为'0802035121'的记录不存在,Update语句并没有更新任何一行数据,所以不报错。
      

  4.   

    1.outdate是标准的datetime类型
    2.ID为'0802035121'这条记录内在
    select * from table where id='0802035121'
    可以找到
      

  5.   

    把原始的update语句贴出来。最好贴点相关数据。报这个错误,一般就是赋值超过了该列定义的长度。
      

  6.   

    update table --你这块的table应该是表名,难道你的表名是table?是的话,改成这[table]
    set outdate=getdate()
    where id='0811010718' --这条语句就报错, 将截断字符串或二进制数据。而
    update table 
    set outdate=getdate()
    where id='0802035121' --这条语句就不报错,这是为什么呢?