Я использую Microsoft SQL Server 2012 Management Studio.
Сейчас я использую хранимую процедуру для хранения ответа веб-службы SOAP из XML в таблицу. Я закончил большую часть этого, кроме части, которая назначает уникальный и постоянный идентификатор для каждой записи.
Я придумал что-то вроде этого:
INSERT INTO [dbo].[sometable]
SELECT
T.r.value('someKey[1]','char(8)') AS some_key,
T1.r1.value('lang[1]','char(10)') AS lang,
T1.r1.value('description[1]','char(30)') AS description,
T1.r1.value('phone[1]','char(10)') AS phone,
GETDATE() AS insert_time,
NULL AS id
FROM
@xDoc.nodes('//*:SomeNode') AS T(r)
CROSS APPLY
T.r.nodes('SomeList/SomeItem') AS T1(r1)
DECLARE @id INT
SET @id = 0
UPDATE [dbo].[sometable]
SET @id = id = @id + 1
Код выше может дать идеальный результат на первый взгляд. Однако идентификатор не является постоянным, поскольку обновление SQL перезапишет идентификатор всей таблицы.
Как решить эту проблему?
Пожалуйста, сообщите мне, если какая-либо информация неясна или отсутствует.