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

тонкости @@IDENTITY

07.03.2012, 18:22. Показов 4071. Ответов 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
1655 / 1154 / 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
1655 / 1154 / 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
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru