我需要将数据类型为char(255)的数据库中所有列的数据类型更改为nvarchar(255)。为此,我需要删除P / F键,然后再次重新创建它们。但是在数据类型更改时,我没有丢失空信息。
某些列可能是可空的,有些则不是。这就是问题所在。
我该如何解决?
修改
当我丢弃P / F键时,我尝试成功更改数据类型。然后,当重新创建密钥时,它表示无法在该字段上设置密钥,因为它可以为空。
然后我尝试用try / catch:
来做尝试添加密钥,如果没有,请更改非null的数据类型,然后再次尝试添加密钥。
它有效,但现在抛出了一些异常。我认为工作已经完成,但我不确定,因为我的数据库有大约100个表,如果没问题就无法检查所有表。
这是其他方法吗?
答案 0 :(得分:1)
您可以使用INFORMATION_SCHEMA.COLUMNS视图查找char(255)的所有列。该视图还包含有关该列的其他信息,例如它属于哪个表以及它是否允许为空。
例如......
select TABLE_NAME, COLUMN_NAME, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
from INFORMATION_SCHEMA.COLUMNS
Where DATA_TYPE = 'char'
And CHARACTER_MAXIMUM_LENGTH = 255
您可以使用该信息来确定需要修改哪些列,并且您知道它是否允许为空。