Я использую SQL Server 2008. Вот мой пример таблицыВставьте SCOPE_IDENTITY во время вставки
SEQ NAME GROUP
1 abc 1
2 bcd 1
3 cde 3
В приведенной выше таблице, SEQ мой столбец идентификаторов (авто номер). Если я хочу, чтобы вставить новую строку с именем = «опр» и группа = 3, я могу сделать это следующим образом
INSERT INTO SampleTable(NAME, GROUP) VALUES ('def',3)
Теперь, если я хочу, чтобы вставить новую строку, а затем установить GROUP = SEQ из недавно вставленный ряд, я делаю это в два этапа, как показано ниже
INSERT INTO SampleTable(NAME, GROUP) VALUES ('def',999)
UPDATE SampleTable SET GROUP = SEQ where NAME = 'def'
Есть ли способ сделать это за один шаг? Например
INSERT INTO SampleTable(NAME, GROUP) VALUES ('def',SCOPE_IDENTITY())
Данное заявление, очевидно, не работает, так как scope_identity() устанавливается только после того, как вставка завершена. Но есть ли способ установить GROUP = SEQ, используя один оператор insert?
Какую-либо конкретную причину это необходимо сделать одной командой? –
Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –
@YuriyGalanter - Нет. Я просто видел, есть ли лучший или более элегантный способ сделать это. – 2013-05-06 16:38:04