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.
Port video games have actually long been a popular type of entertainment, providing exhilarating gameplay…
When it pertains to online gambling, safety needs to be a top issue for every…
There are many reasons to play no-cost online casino games in the coming year. The…
On the internet casinos have acquired tremendous appeal in recent times, offering gamers with the…
Welcome to our useful post concerning the very best casino site game! Whether you're a…
The random number generator (or RNG) is the program that generates the outcome of every…