Nonaktifkan Aktifkan Pemicu SQL server untuk tabel

128

Saya ingin membuat satu proc seperti di bawah ini tetapi ada kesalahan pada sintaksis. Adakah yang bisa menunjukkan masalah?

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'.
pang
sumber

Jawaban:

242

gunakan perintah berikut sebagai gantinya:

ALTER TABLE table_name DISABLE TRIGGER tr_name

ALTER TABLE table_name ENABLE TRIGGER tr_name
Wael Dalloul
sumber
3
versi SqlServer apa ini baik untuk? tidak bekerja untuk saya, saat DISABLE TRIGGER [dbo].[tr_name] on [schema].[table_name]bekerja
Maslow
1
Jawaban Anda benar. Tapi sebenarnya pernyataan @pang tidak perlu diperbaiki, bukan sederhana ;! Saya lebih suka menggunakan ENABLE Trigger. Ini berlaku pada semua SQL Server mulai tahun 2008.
ABS
Jika Anda perlu melakukan semua tabel dalam database, gunakan ini: EXECUTE sp_msforeachtable "ALTER TABLE? Nonaktifkan trigger ALL ALL"
John Dyer
72

Baris sebelum harus diakhiri dengan ;karena dalam SQL DISABLE bukan kata kunci . Sebagai contoh:

BEGIN
;
DISABLE TRIGGER ...
Mark Kane
sumber
11
Saya lebih suka jawaban ini. Ini mengatasi masalah dan memberikan solusi alih-alih solusi. Sementara pemecahan masalah memiliki tempatnya, penting untuk memahami mengapa kesalahan terjadi alih-alih secara membabi buta mengikuti pemecahan masalah tanpa konteks.
Bpainter
13

Seperti yang disebutkan Markus, pernyataan sebelumnya harus diakhiri dengan titik koma. Jadi Anda bisa menggunakan:

; DISABLE TRIGGER dbo.tr_name ON dbo.table_name
kaptan
sumber
2

Setelah ENABLE TRIGGER ATAU DISABLE TRIGGER di baris baru tulis GO, Contoh:

DISABLE TRIGGER dbo.tr_name ON dbo.table_name

GO
-- some update statement

ENABLE TRIGGER dbo.tr_name  ON dbo.table_name

GO
Andrea
sumber
0

Di bawah ini adalah Dynamic Script untuk mengaktifkan atau menonaktifkan Pemicu.

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
Shahab Naseer
sumber
0

jika Anda ingin menjalankan ENABLE TRIGGER Langsung Dari Sumber:

kita tidak bisa menulis seperti ini:

Conn.Execute "ENABLE TRIGGER trigger_name ON table_name"

alih-alih, kita dapat menulis:

Conn.Execute "ALTER TABLE table_name DISABLE TRIGGER trigger_name"
ar3003
sumber
-1

Di bawah ini adalah cara paling sederhana

Coba kodenya

ALTER TRIGGER trigger_name DISABLE

Itu dia :)

kavita londhe
sumber
Tidak bekerja pada SQL Server> 2008 R2 dan pertanyaannya adalah untuk MS SQL Server
kuklei