Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
---------------------------------------- CREATE TABLE [dbo].[test] ( [id] [int] IDENTITY (1, 1) NOT NULL , [about] [char] (10) NULL ) ON [PRIMARY] ---------------------------------------- CREATE TABLE [dbo].[test_detail] ( [id] [int] NOT NULL , [about_detail] [char] (10) NULL ) ON [PRIMARY] ---------------------------------------- почему выполнение данного скрипта выдаст ошибку? insert into test(about) values('master'); insert into test_detail(id, about_detail) values(SCOPE_IDENTITY(), 'detail-1'); insert into test_detail(id, about_detail) values(SCOPE_IDENTITY(), 'detail-2'); одним словом - почему SCOPE_IDENTITY() сбрасывает свое значение в NULL после вставки записи в таблицу test_detail, в которой ни о каких полях identity речи не идет? Получается, что SCOPE_IDENTITY() становится NULL при любых инсертах в таблицу из БД. Но это же нонсенс!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 14:27 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
авторв которой ни о каких полях identity речи не идет? Потому и сбрасывает, что не идет речи. Читаем после первого инсерта scope_identity в переменную и далее пользуемся ею. авторПолучается, что SCOPE_IDENTITY() становится NULL при любых инсертах в таблицу из БД. Но это же нонсенс!!! Наоборот, очень даже логично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 14:31 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
Я позволю не согласится и процитировать официальную документацию: "Returns the last IDENTITY value inserted into an IDENTITY column in the same scope." Перевод: "Возвращает последнее значение IDENTITY вставленное в поле IDENTITY". Я именно в IDENTITY вторым и третьим инсертом не вставляю. Я вставляю в другую таблицу, где полей с IDENTITY нет вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 14:34 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
авторЯ именно в IDENTITY вторым и третьим инсертом не вставляю не дочитали: FIXED]The SCOPE_IDENTITY() function will return the NULL value if the function is invoked before any insert statements into an identity column occur in the scope Во втором инсерте у Вас как раз это is invoked before any insert statements into an identity column occur in the scope ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 14:40 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
2Гавриленко Сергей Алексеевич Да как же так? В нашем случае это не работает. В нашем случае scope - это батч. А в батче уже вызывалось insert statements into an identity column. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 14:46 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
В нашем случае подходит вот что по идее: BOL : If the statement did not affect any tables with identity columns, @@IDENTITY returns NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 14:49 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
авторА в батче уже вызывалось insert statements into an identity column. В предыдущем статменте не вызывалось. Does your second statement insert any identity column? No. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 14:53 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
Вот же, как говорится, из мухи слона!!! Почему так не написать? Код: plaintext 1. 2. 3. 4. 5. 6. 7. И никаких проблемм! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 15:00 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
авторПочему так не написать? Я так своим первым постом и посоветовал. Но человек правды хочет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 15:03 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
2Гавриленко Сергей Алексеевич Вопрос неверно поставлен: Не так надо Does your second statement insert any identity column? No А вот как Does your scope have any insert statements into an identity column на момент второго стейтмента? YES :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 15:03 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
Проблемы нет. Просто из документации не следует, что любой insert скинет значение SCOPE в null, если даже insert идет в таблице без каких-либо полей с IDENTITY. Нет явного указания. Это и вызвало недоумение. А как использовать переменные для решения возникшей ситуации - я знаю. Всё равно спасибо за твой ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 15:04 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
Пишем мелкомягкому на прдмет кривой документации? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 15:05 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
Вы еще инстедный триггер создайте - прослезитесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 15:06 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
Во народ! Лень две строчки кода дописать! Правду им подавай! А БОЛ читать внимательно не охота! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 15:06 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
авторПравду им подавай! А БОЛ читать внимательно не охота! В общем-то, в боле действительно именно про scope_identity не написано, что If the statement did not affect any tables with identity columns, @@IDENTITY returns NULL., хотя очень даже логично, что он null в данном случае возвращает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 15:10 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичПишем мелкомягкому на пердмет кривой документации? :)а было бы неплохо... у меня наблюдается явное расхождение с документацией. SCOPE_IDENTITY (Transact-SQL): Returns the last identity value inserted into an identity column in the same scope. A scope is a module: a stored procedure, trigger, function, or batch . Therefore, if two statements are in the same stored procedure, function, or batch , they are in the same scope. Код: plaintext 1. 2. 3. Код: sql 1. 2. 3. 4. 5. 6. 7. Наблюдаю, что scope_identity() сохраняет своё значение между батчами в одном коннекте. Как так? P.S. ничего что я старый топик поднял? вопросы-то смежные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2019, 02:21 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
Gerros, пробуйте читать не только первую строчку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2019, 08:54 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
GerrosГавриленко Сергей АлексеевичПишем мелкомягкому на пердмет кривой документации? :)а было бы неплохо... у меня наблюдается явное расхождение с документацией. SCOPE_IDENTITY (Transact-SQL): Returns the last identity value inserted into an identity column in the same scope. A scope is a module: a stored procedure, trigger, function, or batch . Therefore, if two statements are in the same stored procedure, function, or batch , they are in the same scope. Код: plaintext 1. 2. 3. Код: sql 1. 2. 3. 4. 5. 6. 7. Наблюдаю, что scope_identity() сохраняет своё значение между батчами в одном коннекте. Как так? P.S. ничего что я старый топик поднял? вопросы-то смежные. Неплохо бы сделать, чтобы бал надпись не только "Между сообщениями интервал более 1 года.", но и более 5 или 10 или 15 лет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2019, 12:31 |
|
||
|
Сброс SCOPE_IDENTITY
|
|||
|---|---|---|---|
|
#18+
GerrosГавриленко Сергей АлексеевичПишем мелкомягкому на пердмет кривой документации? :)а было бы неплохо... у меня наблюдается явное расхождение с документацией. SCOPE_IDENTITY (Transact-SQL): Returns the last identity value inserted into an identity column in the same scope. A scope is a module: a stored procedure, trigger, function, or batch . Therefore, if two statements are in the same stored procedure, function, or batch , they are in the same scope. Код: plaintext 1. 2. 3. Код: sql 1. 2. 3. 4. 5. 6. 7. Наблюдаю, что scope_identity() сохраняет своё значение между батчами в одном коннекте. Как так? P.S. ничего что я старый топик поднял? вопросы-то смежные. Все уже давно перешли на output, а вы все мучаете 20 летний труп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2019, 15:08 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32484395&tid=1687296]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
146ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 449ms |

| 0 / 0 |
