2012-09-10 13 views

Respuesta

34

Puede hacerlo simplemente con SSMS. Simplemente vaya al nombre de su tabla y expanda el nodo Disparadores para ver una lista de activadores asociados con esa tabla. Haga clic derecho para modificar su disparador. enter image description here

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

Aquí solo copie la definición y modifique el activador.

De lo contrario, puede ir a SSMS y expandir su base de datos y, en Programación, expandir Base de datos Triggeres y luego hacer clic derecho en el activador específico y hacer clic en modificar allí también puede cambiar.

2

Ir a través de

Need to list all triggers in SQL Server database with table name and table's schema

Esta URL haber un conjunto de consultas mediante el cual se puede obtener la lista de los momentos asociados con especial mesa.

creo que se está trabajando en sqlserver siguientes son los pasos para obtener modificar disparadores

Para modificar un disparador

  1. expandir un grupo de servidores, a continuación, expanda el servidor.

  2. Expanda Bases de datos, expanda la base de datos en la que pertenece la tabla que contiene el disparador y luego haga clic en Tablas.

  3. En el panel de detalles, haga clic con el botón derecho en la tabla en la que existe el disparador , señale Todas las tareas y luego haga clic en Administrar desencadenantes.

  4. En Nombre, seleccione el nombre del activador.

  5. Cambie el texto del desencadenador en el campo Texto según sea necesario. Presione CTRL + TAB para sangrar el texto de un disparador del Administrador corporativo de SQL Server .

  6. Para verificar la sintaxis del desencadenador, haga clic en Comprobar sintaxis.

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

De esta manera usted puede enumerar todos los momentos asociados con la tabla dada.

+1

Esto podría devolver _muchos filas_ caso% YoutTableName% no es solo para representar una tabla. Ejemplo: ** Producto ** - <** Producto ** Promoción> - Promoción – pfonseca

+1

Esta es una gran respuesta, ya que debería funcionar en todos los entornos de desarrollo. Necesitaba encontrar un desencadenante que no aparecía en mi carpeta de desencadenadores de base de datos en SSMS, conectado a una base de datos alojada de Azure. –

0

consulta sencilla Muy por debajo

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

Esto podría ser útil

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'); 

De esta manera sólo hay que Plugin el nombre de tablas y la consulta buscará todos los factores desencadenantes que necesita

1

use sp_helptrigger para encontrar la lista de activación para las tablas asociadas

1

Con esta consulta puede encontrar todos los disparadores en todas las tablas y todas las vistas.

;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 
0

hallazgo desencadena en la mesa:

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

y se puede encontrar procedimiento almacenado que tiene la referencia de tabla:

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

seleccionar * de information_schema.TRIGGERS;

Cuestiones relacionadas