说我有一张桌子:UltimateTable
。它有列:UltimateColumn1
,UltimateColumn2
。它们应该重命名
UltimateTable_UltimateColumn1
UltimateTable_UltimateColumn2
我相信我可以使用sp_MSForEachTable
迭代表格。如何使用T-SQL重命名单个数据库中的所有表?
我知道很多人不喜欢在别名发生时将表名附加到列名。克服它。这是公司的标准。
(j / k我也讨厌它......)
答案 0 :(得分:3)
我同意米奇的观点,这是一个非常糟糕的主意,你应该把它打死。也就是说,有很简单的方法可以使用目录视图生成这种类型的脚本(不是 sp_MSForEachTable,它仍然只能获取表名,而不是列名称。)
在一个窗口中运行:
SELECT 'EXEC sp_rename ''' + QUOTENAME(TABLE_SCHEMA)
+ '.' + QUOTENAME(TABLE_NAME) + '.'
+ QUOTENAME(COLUMN_NAME) + ''', '''
+ TABLE_NAME + '_' + COLUMN_NAME + ''', ''COLUMN'';'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME NOT LIKE TABLE_NAME + '[_]%';
现在将输出复制并粘贴到新窗口中。在执行之前检查它 - 并首先在测试数据库上测试它!