有没有办法改变列关闭'NOT NULL'?

时间:2009-07-27 11:04:46

标签: sql-server

这可以批量完成吗?这样表中的所有列都可以设置为关闭'NOT NULL'标志?

5 个答案:

答案 0 :(得分:3)

您应该能够使用ALTER TABLE xxx ALTER COLUMN语句重新定义列。


如果这是你需要运行的一次性事情,你可以通过编写一个查询来查询system / dba表中表的列名并生成你的alter语句。您将查询的结果(您的15个或多个alter语句)复制到您的脚本中,然后运行它。我没有太多的mssql经验,也没有现在可以测试的环境,但是有以下几点:

SELECT 
  'ALTER TABLE ' + table_name + ' ALTER COLUMN ' + column_name + ' ' + data_type
FROM INFORMATION_SCHEMA.Columns 
WHERE TABLE_NAME = 'xxx' 

您需要操作data_type部分以添加/删除NULL约束文本

答案 1 :(得分:1)

要批量进行,一次......

使用SSMS设计器生成脚本。这将重建您的表(创建临时表,复制数据,删除旧表,重命名临时表)。

否则,它一次使用ALTER TABLE ...

答案 2 :(得分:0)

是的,你可以做到。在线阅读书籍。

不,它不能批量完成,但您可以在一个查询中执行多个语句。

答案 3 :(得分:0)

获取列的列表和具有所需SQL的模板,并使用某些工具为您创建语句。 我以前在Excel中做过这个,但是你可以用你选择的语言写一个真正的程序。

答案 4 :(得分:0)

当表的数量足够低时,我正在使用SSMSE(SQL Server Management Studio Express),在每个表上输入设计模式并检查所需列上的允许空值

对于更多数量的表格,请尝试 ChrisCM 提供的答案。