Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 27.06.2010
Сообщений: 7

@@IDENTITY данной таблицы

23.08.2010, 17:57. Показов 1768. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется таблица MyTable1, которая содержит триггер:
T-SQL
1
2
3
4
5
CREATE TRIGGER trig_MyTable1 ON dbo.MyTable1
FOR INSERT
AS
INSERT INTO Bak_MyTable1 SELECT * FROM MyTable1
  WHERE MyTable1_ID IN (SELECT  MyTable1_ID FROM INSERTED)
Но после ввода новых значений @@IDENTITY возвращает значение последнего ID из Bak_MyTable1

Приходится делать что-то типа этого:
T-SQL
1
2
3
4
5
6
CREATE TRIGGER trig_MyTable1 ON dbo.MyTable1
INSTEAD OF INSERT
AS
INSERT INTO Bak_MyTable1 SELECT * FROM INSERTED
INSERT INTO MyTable1(MyTable1_ID, Col1, Col2, Col3)
  SELECT Col1, Col2, Col3 FROM INSERTED
Чтобы @@IDENTITY возвращал значение последнего ID из MyTable1, а не из Bak_MyTable1
Может знатоки подскажут те пару строчек, которые нужно добавить в первый вариант тригера. Уверен есть решение с триггером FOR INSERT.

Решений с SCOPE_IDENTITY и IDENT_CURRENT не предлагать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.08.2010, 17:57
Ответы с готовыми решениями:

Таблицы Identity
Всем привет, есть такая проблемка. Использую фреймворк Identity 2.0 и у меня есть еще таблицы ссылающиеся на ID таблицы ASPNETUSERS. ...

Можно ли использовать свои таблицы в ASP Identity?
Здравствуйте! Подскажите, пожалуйста, могу ли я привязать свои собственные таблицы БД к авторизации (например, dbo.Users)? Мне не нужно...

Получение записи другой таблицы из формы данной
В общем есть таблица и форма "Фильмы". В форме выводится информация о годе, бюджете, режиссере и прочем. Надо, например, создать кнопку,...

3
2 / 2 / 2
Регистрация: 14.10.2009
Сообщений: 100
24.08.2010, 09:17
Вот тебе вырезка из статьи:

Функция @@IDENTITY возвращает последнее значение, записанное севером в автоинкрементный столбец в текущей сессии. Что это означает? Если между вызовом INSERT и вызовом @@IDENTITY успеет пролезть вставка из другой сессии, то @@IDENTITY вернет идентификатор, который был записан при первой вставке. То есть, при пользовании @@IDENTITY нет необходимости заботиться о том, что параллельные вставки будут мешать друг другу при получении правильных идентификаторов, сервер все сделает сам.

Все замечательно, но в подобном подходе с сессиями есть один, довольно серьезный недостаток. Если на таблице с автоинкрементным столбцом висит какой-нибудь триггер на вставку, который, в свою очередь, что-то кому-то вставляет, то @@IDENTITY вернет не значение, записанное сервером в оригинальную таблицу, а то значение, которое будет записано после второй вставки в триггере, так как формально это все еще та же сессия.
0
0 / 0 / 0
Регистрация: 27.06.2010
Сообщений: 7
24.08.2010, 13:54  [ТС]
<i>Все замечательно, но в подобном подходе с сессиями есть один, довольно серьезный недостаток. Если на таблице с автоинкрементным столбцом висит какой-нибудь триггер на вставку, который, в свою очередь, что-то кому-то вставляет, то @@IDENTITY вернет не значение, записанное сервером в оригинальную таблицу, а то значение, которое будет записано после второй вставки в триггере, так как формально это все еще та же сессия.</i>

это верно, но в том-то и вопрос, чтобы после вставки в таблицу MyTable1, которая имеет этот триггер:
T-SQL
1
2
3
4
5
CREATE TRIGGER trig_MyTable1 ON dbo.MyTable1
FOR INSERT
AS
INSERT INTO Bak_MyTable1 SELECT * FROM MyTable1
WHERE MyTable1_ID IN (SELECT MyTable1_ID FROM INSERTED)
@@IDENTITY возвращала последний MyTable1_ID (именно @@IDENTITY и именно MyTable1_ID, а не Bak_MyTable1_ID, как происходит в этом случае).
0
2 / 2 / 2
Регистрация: 14.10.2009
Сообщений: 100
24.08.2010, 14:23
>Решений с SCOPE_IDENTITY и IDENT_CURRENT не предлагать.

Без этого не обойтись.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.08.2010, 14:23
Помогаю со студенческими работами здесь

Из данной прямоугольной таблицы вывести на экран строки
Из данной прямоугольной таблицы вывести на экран строки, содержащие хотя бы один нулевой элемент.

Какой компонент использовать для создания данной таблицы?
Какой компонент использовать для создания данной таблицы в C++ builder 2006?

Как определить количество столбцов данной строки таблицы Word-а?
Таблица создавалась на 6 столбцов, но в некоторых строках столбцы объядинялись. Так вот, надо найти именно те строки, которые имеют по 6...

Как связать таблицы и сделать запросы в данной базе данных?
Добрый день. Кто-нибудь может подсказать, как связать таблицы и сделать запросы в прикреплённой базе данных? В таблице...

Получить следующий, id который будет выдан для данной таблицы
Есть таблица, в ней есть id авто инкримент. Как получить id, который будет выдан при след id запросе (записи могут удаляться, и поэтому...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru