Re[5]: Добавление данных в связанные таблицы
От: Дмитрий Михайлов Россия  
Дата: 22.03.02 08:19
Оценка: 4 (1)
M>>@@IDENTITY работает в рамках сессии.
SVZ>Ясно. Спасибо.

SVZ>Вот как бы еще и с триггерами уладить.

SVZ>Может глобальную переменную на время сессии создать для каждой таблицы (если возможно)?
SVZ>Или лучше свой вариант генератора на основе таблицы написать?

Для этого в MSSQL2k есть функция SCOPE_IDENTITY()
MSDN: Returns the last IDENTITY value inserted into an IDENTITY column in the same scope. A scope is a module -- a stored procedure, trigger, function, or batch.

Делать надо примерно так (выдержка хранимой процедуры):

DECLARE @Err INT, @NewID INT
INSERT INTO Employes VALUES ('Vasya')
SELECT @Err=@@ERROR, @NewID=SCOPE_IDENTITY()
IF @@Err <> 0 RETURN @@Err

INSERT INTO [EmployeeTerritories]
SELECT @NewID, [TerritoryID]
FROM [Teritories]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.