Причина использования @@ идентификационные данные, а не scope_identity

Нет необходимости использовать REGEX. Как насчет этого способа, используя CONVERT и SUBSTRING_INDEX?

SELECT CONVERT(SUBSTRING_INDEX(texto, '/', -1), UNSIGNED INTEGER) as seq_num from test2_sim;

См. Fiddle: http://www.sqlfiddle.com/#!9/e914d/ 12

11
задан Lance Fisher 9 December 2008 в 17:11
поделиться

5 ответов

@@IDENTITY возвратит последнее значение идентификационных данных, выпущенное текущей сессией. SCOPE_IDENTITY() возвращает последнее значение идентификационных данных на текущей сессии и том же объеме. Они обычно - то же, но предполагают, что триггер называют, который вставил что-то где-нибудь незадолго до текущего оператора. @@IDENTITY возвратит значение идентификационных данных INSERT оператор триггера, не оператор вставки блока. Это обычно - ошибка, если он не знает то, что он делает.

18
ответ дан 3 December 2019 в 02:21
поделиться

Возможно, необходимо спросить разработчика их объяснение позади внесения изменения.

1
ответ дан 3 December 2019 в 02:21
поделиться

Вот ссылка, которая может помочь дифференцировать их

похож:

  • ИДЕНТИФИКАЦИОННЫЕ ДАННЫЕ - длятся идентификационные данные на соединении
  • SCOPE_IDENTITY - последние идентификационные данные, которые Вы явно создали (исключает триггеры),
  • IDENT_CURRENT ('имя таблицы') - Последние Идентификационные данные в таблице независимо от объема или соединения.
12
ответ дан 3 December 2019 в 02:21
поделиться

Я не могу думать ни о ком, если не был триггер, затем вставил строку (или somesuch), и я действительно действительно хотел идентификатор той вставленной в триггер строки, а не строки, которую я физически изменил.

Другими словами, нет, не действительно.

  • Отказ от ответственности: Не эксперт T-SQL :)
2
ответ дан 3 December 2019 в 02:21
поделиться

Если бы Вы хотели триггерное использование, то Вы могли бы добраться, другой прибавляемый триггер является единственной причиной, которую я могу придумать. Даже затем это опасно, поскольку другой триггер мог быть добавлен, и снова Вы получите неправильные идентификационные данные. Я подозреваю, что разработчик не знает то, что он делает. Но честно лучшая вещь сделать состоит в том, чтобы спросить его, почему он внес изменение. Вы могли возвратить его, но разработчик должен знать, чтобы не сделать это снова, если ему не нужны триггерные идентификационные данные, поскольку Вы не можете поймать его в следующий раз.

0
ответ дан 3 December 2019 в 02:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: