powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Работа Триггера INSERT
6 сообщений из 6, страница 1 из 1
Работа Триггера INSERT
    #32011834
alexmar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, плиз.
Есть вот такая ситуация (приложение работает на ASP).
Вставляются данные в таблицу с помощью команды INSERT (строго одна запись инсертится)
при этом выпоняется триггер, в теле которого выполняется еще один INSERT в другую таблицу - т.е. у меня ведется таким образом журнал операций.
Но в самом ASP приложении после выполнения команды INSERT я получаю ID новой записи. Выглядит это примерно так:

sql = "SELECT * FROM AllStock WHERE id=0"
rs.open sql, trade, 1,3
rs.AddNew
rs("PositionID")= 5309
rs("PositionCount")= 100
rs("UserID")= 55
rs.Update
NewID = rs("ID") 'ID только что добавленной записи - это мне и нужно

Так вот, проблема заключается в том, что после работы триггера мне возвращается неправильный ID. То есть возвращается ID той новой записи, которая инсертится во время выполнения самого триггера, а не той, которая была причиной триггера.
Подскажите как этого можно избежать.
...
Рейтинг: 0 / 0
Работа Триггера INSERT
    #32011836
Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ID Identity-?
...
Рейтинг: 0 / 0
Работа Триггера INSERT
    #32011839
alexmar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поле ID - identity. Все работало корректно до появления триггера.
...
Рейтинг: 0 / 0
Работа Триггера INSERT
    #32011840
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А наверное и 2-ая таблица, в которой вы ведете журнал операций имеет поле с IDENTITY ?
Если так, то проверьте, в каком месте триггера у вас определяется ID для 1-ой таблицы. Можете поискать на этом форуме - тема правильного определения последнего ID ужк обсуждалась.


И заодно уточните вашу версию SQL-я.
...
Рейтинг: 0 / 0
Работа Триггера INSERT
    #32011842
alexmar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да вторая таблица тоже имеет поле Identity
версия SQL - 7.0

Вот пример триггера

CREATE TRIGGER [ins_AllStock] ON [dbo].[AllStock]
FOR INSERT
AS
declare @posID int
declare @posCount float
declare @AllStockID int

Select @AllStockID = inserted.[id], @posID = inserted.PositionID, @posCount = inserted.PositionCount FROM inserted

if @posID = 5309 and @posCount <>"" and ISNUMERIC (@posCount)=1
begin
insert into AllStockJournal (PositionID, PositionCount) VALUES (@posID, @posCount)
/* Вот ID из этой таблицы и возвращается */
end
...
Рейтинг: 0 / 0
Работа Триггера INSERT
    #32011861
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Точно-точно, не раз обсуждали. Вот например http://www.sql.ru/cgi-bin/UltraBoard/UltraBoard.pl?Action=ShowPost&Board=mssql&Post=1058
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Работа Триггера INSERT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]