给多个表批量添加一列并赋予默认值

时间:2021-07-15 01:33:24

目的:给ck_库存台帐XX 添加一列 发生日期 默认值  (((2000)-(1))-(1))   

虽然写出来sql语句,但是最后我还是手动的一张张表去手动添加的,因为怕有问题,不过我本地测试是没有问题的,毕竟是要更新客户那边的数据库,不敢乱来

DECLARE test_cursor CURSOR SCROLL FOR
SELECT Name FROM SYSOBJECTS WHERE TYPE='U' AND name like 'ck_库存台帐%' and name <> 'ck_库存台帐' and name <> 'ck_库存台帐临时' and name <> 'ck_库存台帐摸板'
--打开游标test_cursor
OPEN test_cursor
--定义变量@dh,用来存储读取后的字段内容
DECLARE @dh varchar(18)
--循环游标将数据库中相应字段内容放到@dh,这里要于select语句后的字段位置要对应
FETCH NEXT FROM test_cursor INTO @dh
--开始循环
WHILE @@FETCH_STATUS=0
BEGIN
--PRINT @dh 

exec ('ALTER TABLE ' +@dh+ ' add 发生日期 datetime')
exec ('ALTER TABLE ' +@dh+ ' ADD CONSTRAINT [DF_'+@dh+'_发生日期] DEFAULT (((2000)-(1))-(1)) FOR [发生日期]')
FETCH NEXT FROM test_cursor INTO @dh
END
--关于游标test_cursor
CLOSE test_cursor
--释放掉test_cursor所用的内存空间
DEALLOCATE test_cursor