我正在尝试将列[ExceptionBit]
从一个表复制到另一个表,但我不能使用INSERT INTO
,因为IDENTITY_INSERT
设置为'OFF‘,而我没有打开它的权限。有没有人知道在不使用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
发布于 2015-09-22 21:26:40
首先,你需要检查你的错误消息,因为这不是你为什么在你的帖子中谈论的问题,而是无论我试图找到解决你的“真正”问题的方法,在你的帖子中的评论。
我创建了一个游标,它创建了一个‘伪’插入,然后使用这个插入的@@identity,然后在where子句中使用identity更新。
在大多数场景中不建议使用游标,如果您只使用一次它来存储过去的数据,在这种情况下,您就会想到这个选项。
注意多次执行此操作,以防止重复数据,可能是与它可以为提供服务的目标表的连接
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;
https://stackoverflow.com/questions/32725802
复制相似问题