我的数据库中的许多表都有一个布尔列'IsDeleted'。
我需要更改所有表中的列,默认值为零,然后将值为null的所有旧记录更新为零值。
除了为每个表编写脚本之外,还有办法吗?
谢谢,
答案 0 :(得分:1)
这将是生成所需的CReate,Update和Rename脚本的良好起点。咨询:首先测试数据库的备份。
select
'ALTER TABLE dbo.' + O.Name + ' ADD IsDeletedNew bit default 0;
UPDATE dbo.' + O.Name + ' SET IsDeletedNew = 1 WHERE IsDeleted = 1;
UPDATE dbo.' + O.Name + ' SET IsDeletedNew = 0 WHERE IsDeleted = 0 OR IsDeleted IS NULL;
ALTER TABLE dbo.' + O.Name + ' DROP COLUMN IsDeleted;
EXECUTE sp_rename N''dbo.' + O.Name + '.IsDeletedNew'', N''Tmp_IsDeleted_1'', ''COLUMN''
EXECUTE sp_rename N''dbo.' + O.Name + '.Tmp_IsDeleted_1'', N''IsDeleted'', ''COLUMN'' '
from syscolumns C
Inner join sysobjects o on C.ID = O.ID
where c.name = 'IsDeleted'
答案 1 :(得分:0)
如果有这么多表,请使用动态SQL <{1}}
alter
冲洗并重复以更新值,删除旧列,然后更新新列
答案 2 :(得分:0)
首先,我可以为布尔字段设置默认值。它对我有用。
.entry
这是我的脚本,为每个&#39; IsDeleted&#39;设置默认值。没有defualt值的字段。它对我有用。
#data