Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
215 / 215 / 20
Регистрация: 18.05.2010
Сообщений: 865

тонкости @@IDENTITY

07.03.2012, 18:22. Показов 4016. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
допустим есть некая таблица и хранимая процедура
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE t1(
       F_ID INT NOT NULL IDENTITY,
       F_Name nvarchar(35) NOT NULL)
 
 
GO
 
CREATE proc p1
@F_ID INT output,
@F_Name nvarchar(35)
AS
INSERT INTO t1(F_Name) VALUES(@F_Name)
-- еще скрипты..
SET @F_ID=@@IDENTITY
а теперь вопрос ... пока выполняется эта транзакция то другая транзакция тоже вставляет запись в эту таблицу то какое значение будет в поле @F_ID? если последнее значение то это траблы !!! а мне надо получить ID именно этой записи, как быть?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.03.2012, 18:22
Ответы с готовыми решениями:

Проблема с @@identity
Делаю БД для сети комп магазинов. Создал таблицы, связал. Попробовав занести данные, столкнулся со следующей ошибкой(скриншоты). После...

Оператор @@IDENTITY
Доброго времени суток. Буду очень признателен если поможете разобраться с заданием. Задание: Таблица T1(ID int identity(1,1),DocID...

SCOPE_IDENTITY(),@@IDENTITY
Доброго времени суток, есть проблема автоматической вставки PK_ID из столбца А в FK_ID столбца Б как это можно провернуть со...

9
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
08.03.2012, 13:11
а зачем тебе @@Identity? Читай значение из поля, оно не изменится
(если я правильно хотелку твою понял)
0
215 / 215 / 20
Регистрация: 18.05.2010
Сообщений: 865
08.03.2012, 17:09  [ТС]
Так как я узнаю значение поля???? только по первичному ключу, а первичный ключь это IDENTITY. Что тут непонятного ??? если мне надо записать новую запись и в дальнейшем работать некоторое время с нею то как мне идентифицировать ее кроме как по первичному ключу??? вы читайте внимательно то о чем я пишу. а насчет читать значения поля то таблица имеет нескоолько записей ))) какую запись читать идентифицируется по первичному ключу !!!!)))) что тут не понятного???? и как читать именно ту запись ???? вы говорите что то непонятное...

Добавлено через 43 минуты
В принципе разобрался есть функции
SQL
1
2
IDENT_CURRENT(TABLE name)
SCOPE_IDENTITY()
для моей задачи над именно SCOPE_IDENTITY(). а @@IDENTITY возвращяет последний сгенерированный номер и он может даже и не относится к данной таблице, а IDENT_CURRENT возвращяет последниюю внесенную запись таблицы но так же не наждежен т.к. может в какой то мемент пока я беру это значение другая транзакция вставить запись в эту таблицу, а вот SCOPE_IDENTITY() взвращает последний сгенерированный номер именно данной транзакции.
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
08.03.2012, 18:20
Цитата Сообщение от Башир Посмотреть сообщение
для моей задачи над именно SCOPE_IDENTITY(). а @@IDENTITY возвращяет последний сгенерированный номер и он может даже и не относится к данной таблице, а IDENT_CURRENT возвращяет последниюю внесенную запись таблицы но так же не наждежен т.к. может в какой то мемент пока я беру это значение другая транзакция вставить запись в эту таблицу, а вот SCOPE_IDENTITY() взвращает последний сгенерированный номер именно данной транзакции.
Не для транзакции, а для области видимости (SCOPE)
Но попробуйте эту функцию для таблицы с IDENTITY и триггером INSTEAD OF INSERT
Более универсальный метод - использовать в INSERT ключевое слово OUTPUT.
Однако, это имеет те же ограничения, что и SCOPE_IDENTITY()
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
08.03.2012, 19:58
Цитата Сообщение от Башир Посмотреть сообщение
Так как я узнаю значение поля???? только по первичному ключу, а первичный ключь это IDENTITY. Что тут непонятного ??? если мне надо записать новую запись и в дальнейшем работать некоторое время с нею то как мне идентифицировать ее кроме как по первичному ключу??? вы читайте внимательно то о чем я пишу. а насчет читать значения поля то таблица имеет нескоолько записей ))) какую запись читать идентифицируется по первичному ключу !!!!)))) что тут не понятного???? и как читать именно ту запись ???? вы говорите что то непонятное...
Такая реакция напрочь отбивает всякую охоту помогать. Чем так эмоциями фонтанировать, лучше потратьте время на формулирвку вопроса.
0
215 / 215 / 20
Регистрация: 18.05.2010
Сообщений: 865
09.03.2012, 00:12  [ТС]
Цитата Сообщение от iap Посмотреть сообщение
Но попробуйте эту функцию для таблицы с IDENTITY и триггером INSTEAD OF INSERT
Тут может быть конфуз )) но у меня нет триггеров.

Цитата Сообщение от iap Посмотреть сообщение
Более универсальный метод - использовать в INSERT ключевое слово OUTPUT.
по подробнее об этом если можно, и пример не помешал бы
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
09.03.2012, 12:22
Цитата Сообщение от Башир Посмотреть сообщение
по подробнее об этом если можно, и пример не помешал бы
Предложение OUTPUT (Transact-SQL)
1
 Аватар для Humanitis
176 / 168 / 27
Регистрация: 12.01.2009
Сообщений: 430
09.03.2012, 20:38
OUTPUT не панацея, а что если триггер INSTEAD OF не сделает изменений в таблице?
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
10.03.2012, 17:22
Цитата Сообщение от Humanitis Посмотреть сообщение
OUTPUT не панацея, а что если триггер INSTEAD OF не сделает изменений в таблице?
Я ж говорил, что ограниченя у OUTPUT такие же, как и у SCOPE_IDENTITY().
То есть при наличии у таблицы триггера INSTEAD OF INSERT ни то, ни другое для поля IDENTITY работать не будет.
Совсем.
0
 Аватар для Humanitis
176 / 168 / 27
Регистрация: 12.01.2009
Сообщений: 430
11.03.2012, 08:47
Да, не дочитал до конца сообщение
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2012, 08:47
Помогаю со студенческими работами здесь

Identity seed
После импорта бд на локальный сервер пропал (не сбросился а именно пропал) identity_seed у таблицы. Есть идеи как можно это исправить не...

Последовательная нумеровка identity
Помогите сделать последовательную нумеровку таблицы столбца "idseller", в гугле очень мало инфы про identity. Как сделать так что бы...

@@IDENTITY данной таблицы
Имеется таблица MyTable1, которая содержит триггер: CREATE TRIGGER trig_MyTable1 ON dbo.MyTable1 FOR INSERT AS INSERT INTO...

Неправильная запись в поле с identity
Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY, В таблицу с этим полем записываю данные, но при этом Id идёт не сплошной нумерацией. Т.е. при...

Корректное создание таблиц с IDENTITY
Здравствуйте, уважаемые форумчане! Доброго вам времени суток! =) Возник следующий вопрос при создании-заполнении таблиц. Пусть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru