2012-09-10 10 views

Odpowiedz

34

Możesz to zrobić po prostu za pomocą SSMS. Po prostu przejdź do nazwy tabeli i rozwiń węzeł Wyzwalacze, aby wyświetlić listę wyzwalaczy skojarzonych z tą tabelą. Kliknij prawym przyciskiem, aby zmodyfikować wyzwalacz. 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 

Tutaj wystarczy skopiować definicję i zmienić wyzwalacz.

W przeciwnym razie można po prostu uzyskać SSMS i rozwinąć bazę danych, a pod programowalność rozwinąć bazę danych, a następnie kliknąć prawym przyciskiem myszy na konkretny czynnik uruchamiający i kliknąć opcję modyfikowania. Możesz także zmienić.

2

Go poprzez

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

Ten adres URL ustawiono zapytań za pomocą którego można uzyskać listę wyzwalaczy związanych z określonej tabeli.

Wierzę, że pracujesz w sqlserver są następujące kroki, aby zmodyfikować wyzwalacze

Aby zmodyfikować wyzwalacz

  1. Rozwiń grupę serwerów, a następnie rozwiń węzeł serwera.

  2. Rozwiń bazę danych, rozwiń bazę danych, do której należy tabela zawierająca , a następnie kliknij opcję Tabele.

  3. W okienku szczegółów kliknij prawym przyciskiem myszy tabelę, na której znajduje się wyzwalacz , wskaż polecenie Wszystkie zadania, a następnie kliknij polecenie Zarządzaj wyzwalaczami.

  4. W polu Nazwa wybierz nazwę wyzwalacza.

  5. W razie potrzeby zmień tekst wyzwalacza w polu tekstowym. Naciśnij przycisk CTRL + TAB, aby wprowadzić wcięcie tekstu wyzwalacza SQL Server Enterprise Manager .

  6. Aby sprawdzić składnię wyzwalacza, kliknij przycisk Sprawdź składnię.

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

ten sposób można wymienić wszystkie wyzwalacze skojarzone z danym stole.

+1

Może to potencjalnie zwrócić _too many rows_ case% YoutTableName% nie jest po prostu reprezentacją tabeli. Przykład: ** Produkt ** - <** Produkt ** Promocja> - Promocja – pfonseca

+1

To jest świetna odpowiedź, ponieważ powinna działać we wszystkich środowiskach programistycznych. Potrzebowałem znaleźć wyzwalacz, który nie był wyświetlany w folderze wyzwalaczy bazy danych w systemie SSMS, połączonym z hostowaną bazą danych Azure. –

0

Znacznie proste zapytanie poniżej

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

Może to być użyteczne

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

ten sposób po prostu trzeba plugin nazwy tabel i kwerenda pobiera wszystkie wyzwalacze musisz

1

użyj sp_helptrigger, aby znaleźć listę wyzwalaczy dla powiązanych tabel

1

Dzięki tej kwerendzie możesz znaleźć wszystkie wyzwalacze we wszystkich tabelach i wszystkich widokach.

;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

znalezisko wyzwala w tabeli:

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

i można znaleźć procedurę sklepu, który ma odniesienie do tabeli:

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

select * from information_schema.TRIGGERS;

Powiązane problemy