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]