1、数据丢失。比如你有个vchar类型的,你把它改成int,不支持互相转换的数据就会全部清空;
2、程序调用了数据库,如果不是预期的类型,结构一改很可能程序会出错;
不管字段是否使用到,数据库已经创建一般就不修改(特指删除),不然对即将更新数据库的应用来说,将损失很多用户。
可以写一个数据库升级脚本,如(摘抄网友):
if not exists(select * from syscolumns where id=object_id('gresmanager_goods') and name='goods_allow_discount')
ALTER TABLE gresmanager_goods ADD goods_allow_discount int NULL DEFAULT (0)
GO
UPDATE gresmanager_goods SET goods_allow_discount=0
GO
if not exists(select * from syscolumns where id=object_id('gresmanager_table_consume_detail') and name='detail_discount')
ALTER TABLE gresmanager_table_consume_detail ADD detail_discount decimal(18,4) NOT NULL DEFAULT (1)
GO
UPDATE gresmanager_table_consume_detail SET detail_discount=1
GO
if not exists(select * from syscolumns where id=object_id('gresmanager_consume_bill_tmp') and name='bill_deposit')
ALTER TABLE gresmanager_consume_bill_tmp ADD bill_deposit decimal(18,4) NULL DEFAULT (0)
GO
UPDATE gresmanager_consume_bill_tmp SET bill_deposit=0
GO