Uma trigger é basicamente um tipo de procedure que é automaticamente executada quando algum evento ocorre no banco de dados SQL Server.
Existem vários tipos de triggers, triggers de DDL, DML e Triggers de logon.
Triggers DDL são executados em resposta a uma variedade de eventos de DDL. Esses eventos correspondem principalmente às instruções CREATE, ALTER e DROP do Transact-SQL e algumas procedures no sistema que executam operações do tipo DDL. Triggers de logon dispara em resposta ao evento LOGON que é gerado quando uma sessão de usuário está sendo estabelecida. Essas são as mais utilizadas.
Mas chega de enrolação e vamos ao que interessa.
Como eu posso listar todas as triggers em uma base de dados? Sendo objetivo vou colocar abaixo o script que procura:
SELECT sysobjects.name AS NomeDaTrigger ,USER_NAME(sysobjects.uid) AS OwnerDaTrigger ,s.name AS SchemaDaTabela ,OBJECT_NAME(parent_obj) AS NomeDaTabela ,OBJECTPROPERTY( id, 'ExecIsUpdateTrigger') AS isupdate ,OBJECTPROPERTY( id, 'ExecIsDeleteTrigger') AS isdelete ,OBJECTPROPERTY( id, 'ExecIsInsertTrigger') AS isinsert ,OBJECTPROPERTY( id, 'ExecIsAfterTrigger') AS isafter ,OBJECTPROPERTY( id, 'ExecIsInsteadOfTrigger') AS isinsteadof ,OBJECTPROPERTY(id, 'ExecIsTriggerDisabled') AS [disabled] FROM sysobjects INNER JOIN sys.tables t ON sysobjects.parent_obj = t.object_id INNER JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE sysobjects.type = 'TR'
IsUpdate – Significa que a trigger é disparada em caso de updates na tabela.
IsDelete – Significa que a trigger é disparada em caso de delete na tabela.
IsInsert – Significa que a trigger é disparada em caso de insert na tabela.
IsInsteadOf – Geralmente, a trigger INSTEAD é definido em uma exibição para inserir, atualizar ou apagar dados em uma ou mais tabelas base.
Disabled – Se a trigger está desativada ou não.
SELECT o.name AS NomeDaTrigger ,'x' AS OwnerDaTrigger ,s.name AS SchemaDaTabela ,OBJECT_NAME(o.parent_obj) AS NomeDaTabela ,OBJECTPROPERTY(o.id, 'ExecIsUpdateTrigger') AS isupdate ,OBJECTPROPERTY(o.id, 'ExecIsDeleteTrigger') AS isdelete ,OBJECTPROPERTY(o.id, 'ExecIsInsertTrigger') AS isinsert ,OBJECTPROPERTY(o.id, 'ExecIsAfterTrigger') AS isafter ,OBJECTPROPERTY(o.id, 'ExecIsInsteadOfTrigger') AS isinsteadof ,OBJECTPROPERTY(o.id, 'ExecIsTriggerDisabled') AS [disabled] FROM sysobjects AS o INNER JOIN sysobjects AS o2 ON o.parent_obj = o2.id INNER JOIN sysusers AS s ON o2.uid = s.uid WHERE o.type = 'TR'
Para listar todas as triggers em todas as bases de dados execute o script a seguir:
DECLARE @command varchar(1000) SELECT @command = 'USE ? SELECT DB_NAME() AS DatabaseName ,sysobjects.name AS trigger_name ,USER_NAME(sysobjects.uid) AS trigger_owner ,s.name AS table_schema ,OBJECT_NAME(parent_obj) AS table_name ,OBJECTPROPERTY( id, ''ExecIsUpdateTrigger'') AS isupdate ,OBJECTPROPERTY( id, ''ExecIsDeleteTrigger'') AS isdelete ,OBJECTPROPERTY( id, ''ExecIsInsertTrigger'') AS isinsert ,OBJECTPROPERTY( id, ''ExecIsAfterTrigger'') AS isafter ,OBJECTPROPERTY( id, ''ExecIsInsteadOfTrigger'') AS isinsteadof ,OBJECTPROPERTY(id, ''ExecIsTriggerDisabled'') AS [disabled] FROM sysobjects /* INNER JOIN sysusers ON sysobjects.uid = sysusers.uid */ INNER JOIN sys.tables t ON sysobjects.parent_obj = t.object_id INNER JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE sysobjects.type = ''TR''' EXEC sp_MSforeachdb @command
Use triggers com moderação.
If you are a fan of online gambling, then you must have come across gry…
On the internet online casinos have transformed the betting industry, enabling players to vegas.hu online…
Casinos online offer free spins to draw new customers. These bonuses are usually very profitable,…
In recent times, online casino sites have actually obtained enormous appeal among gamers, providing a…
Bitcoin, the most preferred cryptocurrency worldwide, has reinvented lots of industries, including the on baixar…
Online slots have turned into one of one of the most preferred forms of home…