Подтвердить что ты не робот

Как найти все триггеры, связанные с таблицей с SQL Server?

Я создал триггер для таблицы в SQL Server, и он работает для меня.

Моя проблема: как ее найти и изменить?

Я использую этот запрос для поиска своих триггеров:

select * from sys.triggers

Найти все триггеры, но как открыть его и изменить триггеры?

4b9b3361

Ответ 1

Вы можете сделать это просто с помощью SSMS. Просто перейдите к имени своей таблицы и разверните триггеры node, чтобы просмотреть список триггеров, связанных с этой таблицей. Щелкните правой кнопкой мыши, чтобы изменить триггер. enter image description here

Ответ 2

select so.name, text
from sysobjects so, syscomments sc
where type = 'TR'
and so.id = sc.id
and text like '%YourTableName%'

Таким образом, вы можете перечислить все триггеры, связанные с данной таблицей.

Ответ 3

Это может быть полезно

SELECT 
 t.name AS TableName,
 tr.name AS TriggerName  
FROM sys.triggers tr
INNER JOIN sys.tables t ON t.object_id = tr.parent_id
WHERE 
t.name in ('TABLE_NAME(S)_GOES_HERE');

Таким образом вам просто нужно подключить имя таблиц, и запрос будет извлекать все триггеры, которые вам нужны.

Ответ 4

select m.definition from sys.all_sql_modules m inner join  sys.triggers t
on m.object_id = t.object_id 

Здесь просто скопируйте определение и измените триггер.

Кроме того, вы можете просто перейти к SSMS и развернуть свою БД, а в разделе "Программируемость" расширить триггеры базы данных, затем щелкнуть правой кнопкой мыши по конкретному триггеру и нажать "Изменить", также вы можете изменить.

Ответ 5

используйте sp_helptrigger для поиска триггерного списка для связанных таблиц

Ответ 6

найти триггеры в таблице:

select so.name, text
from sysobjects so, syscomments sc
where type = 'TR'
and so.id = sc.id
and text like '%TableName%'

, и вы можете найти процедуру хранения, которая имеет ссылку таблицы:

SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%yourtablename%'

Ответ 7

Пройдите

Нужно перечислить все триггеры в базе данных SQL Server с таблицей и схемой таблицы

В этом URL-адресе есть набор запросов, с помощью которых вы можете получить список триггеров, связанных с конкретной таблицей.

Я считаю, что вы работаете в sqlserver, следуя инструкциям по настройке триггеров

Чтобы изменить триггер

  • Разверните группу серверов, а затем разверните сервер.

  • Разверните базы данных, разверните базу данных, в которой содержится таблица, содержащая триггер принадлежит, а затем щелкните Таблицы.

  • В области сведений щелкните правой кнопкой мыши таблицу, на которой запускается триггер существует, выберите "Все задачи" и нажмите "Управление триггерами".

  • В поле Имя выберите имя триггера.

  • При необходимости измените текст триггера в текстовом поле. Нажмите CTRL + TAB, чтобы вставить текст SQL Server Enterprise Manager триггер.

  • Чтобы проверить синтаксис триггера, нажмите "Проверить синтаксис".

Ответ 8

С помощью этого запроса вы можете найти все триггер во всех таблицах и всех представлениях.

    ;WITH
        TableTrigger
        AS
        (
            Select 
                Object_Kind = 'Table',
                Sys.Tables.Name As TableOrView_Name , 
                Sys.Tables.Object_Id As Table_Object_Id ,
                Sys.Triggers.Name As Trigger_Name, 
                Sys.Triggers.Object_Id As Trigger_Object_Id 
            From Sys.Tables 
            INNER Join Sys.Triggers On ( Sys.Triggers.Parent_id = Sys.Tables.Object_Id )
            Where ( Sys.Tables.Is_MS_Shipped = 0 )
        ),
        ViewTrigger
        AS
        (
            Select 
                Object_Kind = 'View',
                Sys.Views.Name As TableOrView_Name , 
                Sys.Views.Object_Id As TableOrView_Object_Id ,
                Sys.Triggers.Name As Trigger_Name, 
                Sys.Triggers.Object_Id As Trigger_Object_Id 
            From Sys.Views 
            INNER Join Sys.Triggers On ( Sys.Triggers.Parent_id = Sys.Views.Object_Id )
            Where ( Sys.Views.Is_MS_Shipped = 0 )
        ),
        AllObject
        AS
        (
            SELECT * FROM TableTrigger

            Union ALL

            SELECT * FROM ViewTrigger
        )


    Select 
        * 
    From AllObject
    Order By Object_Kind, Table_Object_Id 

Ответ 9

Простой запрос ниже

select (select [name] from  sys.tables where [object_id] = tr.parent_id ) as TableName ,*  from sys.triggers tr

Ответ 10

выберите * из information_schema.TRIGGERS;

Ответ 11

select t.name as TriggerName,m.definition,is_disabled 
from sys.all_sql_modules m 
inner join  
sys.triggers t
on m.object_id = t.object_id 
inner join sys.objects o
on o.object_id = t.parent_id
Where o.name = 'YourTableName'

Это даст вам все триггеры на указанной таблице

Ответ 12

Вы можете просмотреть все триггеры, связанные с вашей базой данных по запросу ниже

select * from sys.triggers

А для открытого триггера вы можете использовать ниже синтаксис

sp_helptext 'dbo.trg_InsertIntoUserTable'

Ответ 13

Попробуй использовать:

select * from sys.objects where type='tr' and name like '%_Insert%'

Ответ 14

Вы можете открыть свой триггер с помощью sp_helptext yourtriggername