我有一个包含59列的表Table1
。 Table2
是Table1
的副本,最后有一列,COLUMN 60
。因此table2
有60列。
我正在尝试将值从table1
复制到table2
,并将table2
中额外列的值设置为“值”
像这样的东西
INSERT INTO Table2
SELECT * FROM Table1, 'value' AS 'COLUMN 60'
我该怎么做?使用上面的代码给我一个错误:
只有在使用列列表和IDENTITY_INSERT时,才能指定表'TableLocation'中标识列的显式值 是开启。
我不想指定列名,因为它们太多了。
答案 0 :(得分:8)
试试这个:
SET IDENTITY_INSERT dbo.Table2 ON
INSERT INTO Table2
SELECT *, 'value' AS 'COLUMN 60' FROM Table1
SET IDENTITY_INSERT dbo.Table2 OFF
答案 1 :(得分:3)
您知道可以直接从SSMS拖动列名吗?导航到表格,然后将列文件夹拖到查询窗口中,它将列出所有列
现在,如果您想保留标识值,请使用
SET IDENTITY_INSERT dbo.Table2 ON
--INSERT HERE
-- make sure to list all the columns, it is required
SET IDENTITY_INSERT dbo.Table2 OFF
答案 2 :(得分:0)
是否真的需要在一个声明中完成?
INSERT INTO Table2
SELECT * FROM Table1
ALTER TABLE Table2
ADD Column60 varchar