0 / 0 / 0
Регистрация: 27.06.2010
Сообщений: 7

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

23.08.2010, 17:57. Показов 1772. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru