sql >> Base de Datos >  >> RDS >> Sqlserver

Devolver el tipo de activador DML en una tabla en SQL Server

En SQL Server, puede usar el procedimiento almacenado sp_helptrigger para devolver el tipo o tipos de activadores DML definidos en la tabla especificada para la base de datos actual.

Este procedimiento almacenado solo funciona en disparadores DML (no en disparadores DDL).

Sintaxis

La sintaxis oficial es así:

sp_helptrigger [ @tabname = ] 'table'   
     [ , [ @triggertype = ] 'type' ]

Debe proporcionar el nombre de la tabla como argumento. Puede prefijarlo con @tabname = , pero esto es opcional.

También tiene la opción de especificar un tipo de disparador. Esto puede ser INSERT , DELETE o UPDATE .

Ejemplo 1:uso básico

Aquí hay un ejemplo simple para demostrarlo.

EXEC sp_helptrigger 'dbo.t1';

Resultado:

+-------------------+-----------------+------------+------------+------------+-----------+---------------+------------------+
| trigger_name      | trigger_owner   | isupdate   | isdelete   | isinsert   | isafter   | isinsteadof   | trigger_schema   |
|-------------------+-----------------+------------+------------+------------+-----------+---------------+------------------|
| t1_insert_trigger | dbo             | 0          | 0          | 1          | 1         | 0             | dbo              |
+-------------------+-----------------+------------+------------+------------+-----------+---------------+------------------+

En caso de que tenga problemas para desplazarse hacia los lados, este es el resultado nuevamente usando la salida vertical:

trigger_name   | t1_insert_trigger
trigger_owner  | dbo
isupdate       | 0
isdelete       | 0
isinsert       | 1
isafter        | 1
isinsteadof    | 0
trigger_schema | dbo

Ejemplo 2:especificar un tipo

En este ejemplo también especifico el tipo.

EXEC sp_helptrigger 'dbo.t1', 'INSERT';

Resultado (usando salida vertical):

trigger_name   | t1_insert_trigger
trigger_owner  | dbo
isupdate       | 0
isdelete       | 0
isinsert       | 1
isafter        | 1
isinsteadof    | 0
trigger_schema | dbo

En este caso, hubo un disparador de ese tipo.

Aquí está nuevamente usando un tipo diferente.

EXEC sp_helptrigger 'dbo.t1', 'DELETE';

Resultado:

(0 rows affected)

En este caso no hubo DELETE disparadores en esa mesa.