Ответ 1
Вы можете сделать это просто с помощью SSMS. Просто перейдите к имени своей таблицы и разверните триггеры node, чтобы просмотреть список триггеров, связанных с этой таблицей. Щелкните правой кнопкой мыши, чтобы изменить триггер.
Я создал триггер для таблицы в SQL Server, и он работает для меня.
Моя проблема: как ее найти и изменить?
Я использую этот запрос для поиска своих триггеров:
select * from sys.triggers
Найти все триггеры, но как открыть его и изменить триггеры?
Вы можете сделать это просто с помощью SSMS. Просто перейдите к имени своей таблицы и разверните триггеры node, чтобы просмотреть список триггеров, связанных с этой таблицей. Щелкните правой кнопкой мыши, чтобы изменить триггер.
select so.name, text
from sysobjects so, syscomments sc
where type = 'TR'
and so.id = sc.id
and text like '%YourTableName%'
Таким образом, вы можете перечислить все триггеры, связанные с данной таблицей.
Это может быть полезно
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');
Таким образом вам просто нужно подключить имя таблиц, и запрос будет извлекать все триггеры, которые вам нужны.
select m.definition from sys.all_sql_modules m inner join sys.triggers t
on m.object_id = t.object_id
Здесь просто скопируйте определение и измените триггер.
Кроме того, вы можете просто перейти к SSMS и развернуть свою БД, а в разделе "Программируемость" расширить триггеры базы данных, затем щелкнуть правой кнопкой мыши по конкретному триггеру и нажать "Изменить", также вы можете изменить.
используйте sp_helptrigger для поиска триггерного списка для связанных таблиц
найти триггеры в таблице:
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%'
Пройдите
Нужно перечислить все триггеры в базе данных SQL Server с таблицей и схемой таблицы
В этом URL-адресе есть набор запросов, с помощью которых вы можете получить список триггеров, связанных с конкретной таблицей.
Я считаю, что вы работаете в sqlserver, следуя инструкциям по настройке триггеров
Чтобы изменить триггер
Разверните группу серверов, а затем разверните сервер.
Разверните базы данных, разверните базу данных, в которой содержится таблица, содержащая триггер принадлежит, а затем щелкните Таблицы.
В области сведений щелкните правой кнопкой мыши таблицу, на которой запускается триггер существует, выберите "Все задачи" и нажмите "Управление триггерами".
В поле Имя выберите имя триггера.
При необходимости измените текст триггера в текстовом поле. Нажмите CTRL + TAB, чтобы вставить текст SQL Server Enterprise Manager триггер.
Чтобы проверить синтаксис триггера, нажмите "Проверить синтаксис".
С помощью этого запроса вы можете найти все триггер во всех таблицах и всех представлениях.
;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
Простой запрос ниже
select (select [name] from sys.tables where [object_id] = tr.parent_id ) as TableName ,* from sys.triggers tr
выберите * из information_schema.TRIGGERS;
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'
Это даст вам все триггеры на указанной таблице
Вы можете просмотреть все триггеры, связанные с вашей базой данных по запросу ниже
select * from sys.triggers
А для открытого триггера вы можете использовать ниже синтаксис
sp_helptext 'dbo.trg_InsertIntoUserTable'
Попробуй использовать:
select * from sys.objects where type='tr' and name like '%_Insert%'
Вы можете открыть свой триггер с помощью sp_helptext yourtriggername