раньше (в версиях 5,8Х), помню в триггерах скуля были ветка на того, кто лезет :
-галактический коник...
-кто то со стороны
и как то вроде работала вставка извне. Сейчас глянул - в 81 точно триггер поменян по сравнению с тем, что было.
Но насколько мне известно, тебе не заюзать будет нрек, генерируемый в триггере поскольку лезя туда со своей проги ты не будешь "галактическим коником" и :
exec master..na_getnextnrec @db_name,<код таблицы>,@ATL_NREC output,@needmax output
будет возвращаеть просто в @ATL_NREC null
Для того, что бы это все работало нужно приконнектиться своей прогой к сервису NA и сделать как то галактическим процесс твой.Тогда эти ESP,вызываемые из dll, отрабатывать будут, по идее.
Может это тебе поможет, но это есть, конечно же, не самый хороший вариант :
CREATE FUNCTION GenerateNextNrec (@FromCurrentNrec Binary( 8 ))
RETURNS binary( 8 )
AS
BEGIN
Declare @NextNrec binary( 8 ), @index int
Set @index = 8
-- ищем самый мл.байт отличный от 0xFF=255, чтобы потом не развлекаться с переносами из байта в байт; (его и будем увеличивать на 1)
While @index>1 and SubString(@FromCurrentNrec, @index, 1) = 0xFF begin
Select @index = @index-1
end
-- найденный байт увеличится на 1; более младшие байты обнулятся
Select @NextNrec = SubString(@FromCurrentNrec, 1, @index-1) -- неменяющшийся кусочек NREC'а
+ cast(cast(SubString(@FromCurrentNrec, @index, 1) as int)+1 as binary(1)) -- этот байт увеличился на 1 (только через преобразование к числу и обратно)
+ 0x0000000000000000 -- остальные байты заполняем нулями; больше чем 8(!) в binary( 8 ) всё равно не влезет, поэтому
-- нет необходимости заботиться о вычислении требуемого количества
RETURN @NextNrec
END
SELECT dbo.GenerateNextNrec (0x800A00000000976A)
Хотя может я не и не прав, и эти функции из na_ можно как то заюзать проще