今天碰到一个bug,是这样的:
当我通过web界面向test表插入一条记录时候,sybase报如下错误:
Insert Object Error: Implicit conversion from datatype 'INT' to 'VARCHAR' is not allowed
test表结构是这样的 :
create table test (
id int not null,
name varchar(10) null,
team varchar(10) default 20 null
)
这个语句是可以成功执行的.
后来查找到原因如下:
插入记录时,我没有设置 team的值,就好像执行如下的语句一样:
insert into test ( id , name ) values ( 1, 'test' )
因为 没有设置 team 字段的值,所以 sybase就用 20 来作为缺省值来设置 team 的值,但因为 team为varchar型的,所以就报上面那个错误了 , 后来把default 值设为 '20' 就可以了.
我不明白的是,为什么sybase在建表的时候不指出这样的错误 , 而非要到实际使用的时候才报错 ?