Chcę utworzyć jeden proc, jak poniżej, ale zawiera błąd w składni. Czy ktoś mógłby wskazać na problem?
Create PROCEDURE [dbo].[my_proc] AS
BEGIN
DISABLE TRIGGER dbo.tr_name ON dbo.table_name
-- some update statement
ENABLE TRIGGER dbo.tr_name ON dbo.table_name
END
** Error Message : Incorrect syntax near 'ENABLE'.
sql-server
triggers
ostry ból
źródło
źródło
DISABLE TRIGGER [dbo].[tr_name] on [schema].[table_name]
pracował;
! Wolę używaćENABLE Trigger
. Ma zastosowanie na wszystkich serwerach SQL począwszy od 2008 r.Wiersz poprzedzający musi kończyć się znakiem,
;
ponieważ w SQLDISABLE
nie jest słowem kluczowym . Na przykład:BEGIN ; DISABLE TRIGGER ...
źródło
Jak wspomniał Marek, poprzednie stwierdzenie należy zakończyć średnikiem. Możesz więc użyć:
źródło
Po ENABLE TRIGGER LUB DISABLE TRIGGER w nowym wierszu napisz GO, Przykład:
DISABLE TRIGGER dbo.tr_name ON dbo.table_name GO -- some update statement ENABLE TRIGGER dbo.tr_name ON dbo.table_name GO
źródło
Poniżej znajduje się skrypt dynamiczny do włączania lub wyłączania wyzwalaczy.
select 'alter table '+ (select Schema_name(schema_id) from sys.objects o where o.object_id = parent_id) + '.'+object_name(parent_id) + ' ENABLE TRIGGER '+ Name as EnableScript,* from sys.triggers t where is_disabled = 1
źródło
jeśli chcesz wykonać ENABLE TRIGGER bezpośrednio ze źródła:
nie możemy tak pisać:
zamiast tego możemy napisać:
Conn.Execute "ALTER TABLE table_name DISABLE TRIGGER trigger_name"
źródło
Poniżej znajduje się najprostszy sposób
Wypróbuj kod
ALTER TRIGGER trigger_name DISABLE
Otóż to :)
źródło