很奇怪的一个问题:
不知道为啥我以前旧的版本都没错,
旧表结构如下:
CREATE TABLE [Table1](
id int not null identity (1, 1),
name char(128) not null primary key,
text char(255) null);CREATE TABLE [Table2](
id int not null identity (1, 1),
name char(128) not null primary key,
text char(255) null);修改后如下:
CREATE TABLE [Table1](
id int not null identity (1, 1) primary key,
name char(128) not null ,
text char(255) null);
CREATE UNIQUE INDEX UQ_NAME_INDEX ON [Table1](name);CREATE TABLE [Table2](
id int not null identity (1, 1) primary key,
name char(128) not null ,
text char(255) null);
CREATE UNIQUE INDEX UQ_NAME_INDEX ON [Table1](name);
用旧表结构的时候,做拷贝的时候不会报错:
Table1数据:1,'nn',NULL
我先执行:SET IDENTITY_INSERT [Table2] ON
后将Table1拷贝到Table2可以拷贝过去但是当我用新的表结构时就错误,这是为啥呐,照理来说如果是text字段为NULL导致insert时被截断,但是旧表结构为啥可以。还有就是这个NULL值具体要怎么处理,插入时怎么才能知道Table1中的text字段是不是NULL,调试跟踪下,NULL并非''值,而是'烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫皞'
谁告诉我下这个具体要怎么处理,拷贝过去我要保持原表数据:1,'nn',NULL,而不是1,'nn',''

解决方案 »

  1.   

    Table2中字符串长度定义不够?
      

  2.   

    TABLE2里面的字段长度不够么?
      

  3.   


    你可以试试看,调用SET IDENTITY_INSERT [Table2] ON后插入数据1,'nn','烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫皞'
    绝对text字段会被截断的
      

  4.   

    我知道因为text char(255)不够,但是我从Table1中select*后它就是这个值了,应该是因为table1中的text字段是NULL值的原因,所以我想问问看,如何才能判断一个字段的值为NULL,这样我也可以相应的在插入的时候就把值=NULL。
    我不希望修改table1原表中的数据,就是希望它还是原来的1,'nn',NULL,而不是1,'nn',''。
      

  5.   


    在SQL2005環境測過沒有問題
      

  6.   

    确定表1中的text字段都是NULL?
      

  7.   


    我是用sql2000的,就是会提示被截断,然后插入就失败了。
      

  8.   


    恩,我表1中只有一条记录,就是1,'nn',NULL不知道怎么才能判断数据库中莫条记录的莫个字段是NULL呢?
    我试过把text字段随便改成'11'什么的就没有报被截断了
      

  9.   

    insert Table1(。。)
    select 1,'nn',cast( 字符串 as varchar(8000))--這樣新增試試