Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 改变表然后更新_Sql_Database_Tsql - Fatal编程技术网

Sql 改变表然后更新

Sql 改变表然后更新,sql,database,tsql,Sql,Database,Tsql,如何在transact-sql中实现这一点 我想将新列添加到现有表中,然后用一些值更新它。是可以在一个sql脚本中完成,还是应该使用单独的脚本 这是一个示例代码 ALTER TABLE my_table ADD my_new_column bit NULL; UPDATE my_table SET my_new_column = 0; 我知道我在写作,而专栏仍然不存在,这就是为什么这两行行不通的原因。但是如何在一个脚本中实现这一点,即使用一些延迟,或者如何确保创建了列,然后向其中写入数据

如何在transact-sql中实现这一点

我想将新列添加到现有表中,然后用一些值更新它。是可以在一个sql脚本中完成,还是应该使用单独的脚本

这是一个示例代码

 ALTER TABLE my_table ADD my_new_column bit NULL;

 UPDATE my_table SET my_new_column = 0;
我知道我在写作,而专栏仍然不存在,这就是为什么这两行行不通的原因。但是如何在一个脚本中实现这一点,即使用一些延迟,或者如何确保创建了列,然后向其中写入数据

我使用了IF EXISTS和表中的select,但它不起作用


谢谢

您可以通过添加默认值并使用
WITH VALUES
子句来添加新列并同时填充它。如果不再需要,可以在末尾删除默认值。此方法可用于多个列,如下所示

ALTER TABLE [myTable]
ADD [my_new_column] [bit] NULL CONSTRAINT DF_TMP DEFAULT 0 ,
    [my_new_column2] [bit] NULL CONSTRAINT DF_TMP2 DEFAULT 1 WITH VALUES;

ALTER TABLE [myTable] DROP DF_TMP, DF_TMP2

如果我想用不同于0的值(如1)更新多个字段,该怎么办?尝试了这个查询,效果很好,但我还是希望以后使用update。您可以用同样的方法添加多个列和默认约束。除此之外,通常最好在与DML不同的批处理中执行DDL,以避免解析问题(通过在语句之间添加
GO
,或者根据需要执行此操作的上下文使用
EXEC
),谢谢您的建议。是,DDL应始终与DML分开。在这种情况下,我需要简单的脚本来完成简单的任务。不管怎样,我在这里用了这个答案和GO语句,结果正如我预期的那样