在现有SQL表中插入新列
我有一个包含a、B、C、D、E、F列的“源数据”表 我使用此表通过使用在现有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的方法是因为必须使用动态
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如何阻止您指定列名?