我需要比较两个数据库并确定哪些列已更改。一旦我确定了以某种方式改变的列(大小,类型等),我需要捕获(写入表)旧列定义和新列定义。
例如,如果使用INFORMATION_SCHEMA.COLUMNS表,我发现列大小已从25更改为50,我将需要存储两列定义。在这种情况下,它可能是'char(25)'和'char(50)'。
使用INFORMATION_SCHEMA.COLUMNS表来确定某些内容发生了变化时我没有问题。
我遇到的问题是,一旦我确定该列已更改,我如何构建列定义?在这种情况下,如何构建'char(25)'和'char(50)'?
我可以在哪里获得这种类型的定义吗?如果我必须逐个构建定义,我该如何确定定义的所有组件。
感谢任何建议或建议。
提前致谢。
答案 0 :(得分:1)
select table_name, column_name,
column_definition = data_type + isnull('(' + convert(varchar, character_maximum_length) + ')', '')
from information_schema.columns