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

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

23.08.2010, 17:57. Показов 1750. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
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/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru