我正在尝试将列[ExceptionBit]
从一个表复制到另一个表,但我无法使用INSERT INTO
,因为IDENTITY_INSERT
设置为“关闭”而我不会有权打开它。有没有人知道从一个表复制到另一个表而不必使用INSERT INTO
的方法?
以下是我正在尝试执行的代码片段以及错误代码:
SET IDENTITY_INSERT [ReliabilityData].[dbo].[ReferenceDesignator] ON
INSERT INTO [ReliabilityData].[dbo].[ReferenceDesignator]
([ExceptionFlag], [ReferenceDesignatorID])
SELECT [ExceptionFlag], 177375
FROM [ReliabilityData].[dbo].[ReferenceDesignator]
WHERE [ReferenceDesignatorID] = 176839
答案 0 :(得分:0)
首先,您需要检查一下您的错误消息,因为这不是您在帖子中说话的原因,而是我试图找到您的“真实”的解决方案。问题,你帖子中的评论。
我制作了一个光标,制作了一个假的'然后插入,使用此插入的@@ identity,然后使用where子句中的identity进行更新。
在大多数场景中都不建议使用光标,如果您只将它用于过去的数据一次,在这种情况下会想到这个选项。
注意执行此操作超过1次以防止重复数据,可能是与其可以投放的目标表的连接
CREATE TABLE IDENTITY_TABLE
(
PRIMARY_KEY INT IDENTITY(1,1),
COL_2 VARCHAR(20)
)
CREATE TABLE TABLE_2
(
PRIMARY_KEY INT,
COL_2 VARCHAR(20)
)
DECLARE @PRIMARY_KEY INT,@COL_2 VARCHAR(20)
DECLARE CURSOR_1 CURSOR FOR
SELECT PRIMARY_KEY,COL_2 FROM TABLE_2
OPEN CURSOR_1
FETCH CURSOR_1
INTO @PRIMARY_KEY,@COL_2
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO IDENTITY_TABLE
VALUES ('TEST1')
PRINT @@IDENTITY
UPDATE IDENTITY_TABLE
SET COL_2 =
(
@COL_2
)
WHERE PRIMARY_KEY = @@IDENTITY
FETCH CURSOR_1
INTO @PRIMARY_KEY,@COL_2
END
CLOSE CURSOR_1;
DEALLOCATE CURSOR_1;