Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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_Sql Server_Sql Server 2008 - Fatal编程技术网

在现有SQL表中插入新列

在现有SQL表中插入新列,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个包含a、B、C、D、E、F列的“源数据”表 我使用此表通过使用 INSERT INTO LIVETABLE SELECT * FROM SOURCEDATATABLE 最近,在LIVETABLE 我只想在C和D之间的SOURCEDATATABLE中插入一个C1列,这样它现在就是a、B、C、C1、D、E、F。由于LIVETABLE接受空值,因此无需填充数据 有什么简单的解决办法吗 编辑-缺少信息 这个表是许多表中的一个,我使用INSERT INTO的方法是因为必须使用动态

我有一个包含a、B、C、D、E、F列的“源数据”表

我使用此表通过使用

INSERT INTO LIVETABLE 
   SELECT * 
   FROM SOURCEDATATABLE
最近,在
LIVETABLE

我只想在C和D之间的
SOURCEDATATABLE
中插入一个C1列,这样它现在就是a、B、C、C1、D、E、F。由于
LIVETABLE
接受空值,因此无需填充数据

有什么简单的解决办法吗

编辑-缺少信息


这个表是许多表中的一个,我使用INSERT INTO的方法是因为必须使用动态SQL(出于各种其他原因),所以我无法指定列名,这是“我将不使用SELECT*”这句咒语的原因,您直接就遇到了它。将列添加到SOURCEDATATABLE(如有必要)中,并对新列使用NULL枚举SELECT子句中的列。

在两列之间插入新列的唯一方法是按所需顺序创建一个包含列的新表,将数据复制到其中,删除旧表并用旧名称重命名新表。确保删除主键标识以维护标识列。

只能在末尾添加列。您需要创建一个新表并相应地填充它。最简单的解决方案是在insert查询中指定字段,而不是选择*。作为最佳做法,您永远不应该在代码中选择*,而应该命名要选择的字段。这样你就不会在你描述的案例中破坏任何东西。如果您不想更改代码,只需在两个表的相同位置添加新字段……谢谢@Bartdude-我完全同意。我编辑了我的原始问题,因为我被使用动态SQL束缚住了-此表是许多要填充的表之一动态SQL如何阻止您指定列名?