SQL Server: как получить значение для вставленной строки? - PullRequest
1 голос
/ 20 декабря 2009

Моя таблица SQL Server содержит, между прочим, эти столбцы.

AutoID , для которого для IdentitySpecification задано значение True, и GuidKey , для которого установлено значение по умолчанию (newid ())

AutoID   GuidKey
1        f4rc-erdd
2        gedd-rrds

Есть ли способ получить GuidKey из вставленной строки?

Мне нужно что-то вроде Scope_Identity (), с той разницей, что я не хочу получать содержимое AutoID, кроме столбца GuidKey.

Ответы [ 4 ]

5 голосов
/ 20 декабря 2009

Sql Server 2005/2008

INSERT INTO myTable (SomeColumn)
    OUTPUT INSERTED.GuidKEY
VALUES ('SomeData')
0 голосов
/ 20 декабря 2009

Для uniqueidentifier я делаю следующее:

DECLARE @ID uniqueidentifier
SET @ID = newId()

...

Тогда я использую @ID в своем операторе вставки. Наконец, я возвращаю значение, используя SELECT @ID или RETURN @ID

0 голосов
/ 20 декабря 2009

Вы можете сделать следующее:

DECLARE @TempTable TABLE (GuidKey UNIQUEIDENTIFIER)

INSERT INTO YourTable(Columns) 
  OUTPUT INSERTED.GuidKey INTO @TempTable(GuidKey) 
  VALUES(YourVALUES)

Это вставит вставленный GuidKey в @TempTable. Затем вы можете извлечь значение из этой таблицы.

0 голосов
/ 20 декабря 2009

Sure:

 SELECT GuidKEy FROM [Table] WHERE AutoID= scope_identity()
...