Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как определить object_id DDL триггера, находясь внутри него?  [new]
remi_
Member

Откуда: СПб
Сообщений: 246
В ряде табличных триггеров у меня есть вызов работающей функции вида
if dbo.Func('имя_таблицы') = 1 return

Соответственно, в каждый триггер прописывается имя его таблицы.
Возник вопрос, а нельзя ли имя таблицы/триггера определять автоматически, находясь внутри него?
И убрать из функции входной параметр.
20 фев 21, 10:44    [22283953]     Ответить | Цитировать Сообщить модератору
 Re: Как определить object_id DDL триггера, находясь внутри него?  [new]
msLex
Member

Откуда:
Сообщений: 8700
create table dbo.t1 (id int)
go

create trigger dbo.t_ins on dbo.t1 
with execute as owner
for insert
as
	select 
		trigger_name = object_schema_name(object_id) + '.' + object_name(object_id)
		, table_name = object_schema_name(parent_object_id) + '.' + object_name(parent_object_id)
	from sys.objects
	where
		object_id = @@PROCID
go 

insert dbo.t1 
select 1


drop table dbo.t1
20 фев 21, 11:09    [22283972]     Ответить | Цитировать Сообщить модератору
 Re: Как определить object_id DDL триггера, находясь внутри него?  [new]
remi_
Member

Откуда: СПб
Сообщений: 246
Сердечное мерси. Совсем про @@PROCID забыл.
20 фев 21, 11:27    [22283981]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить