কোনও টেবিলের জন্য ট্রিগার এসকিউএল সার্ভার সক্ষম করুন অক্ষম করুন


128

আমি নীচের মতো একটি প্রকোপ তৈরি করতে চাই তবে এতে সিনট্যাক্সে ত্রুটি রয়েছে। কেউ কি সমস্যা দেখিয়ে দিতে পারে?

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

উত্তর:


242

পরিবর্তে নিম্নলিখিত আদেশগুলি ব্যবহার করুন:

ALTER TABLE table_name DISABLE TRIGGER tr_name

ALTER TABLE table_name ENABLE TRIGGER tr_name

3
স্কেল সার্ভারের কোন সংস্করণ এটির জন্য ভাল? আমার জন্য কাজ করছে না, যখন DISABLE TRIGGER [dbo].[tr_name] on [schema].[table_name]কাজ
মাসলো

1
আপনার উত্তরটি সঠিক। তবে আসলে @ প্যাং স্টেটমেন্টগুলিকে সরল পরিবর্তে কোনও ফিক্সের দরকার নেই ;! আমি ব্যবহার করতে পছন্দ ENABLE Trigger। এটি ২০০৮ থেকে শুরু হওয়া সমস্ত এসকিউএল সার্ভারগুলিতে প্রযোজ্য।
এবিএস

আপনার যদি কোনও ডাটাবেসে সমস্ত টেবিলগুলি ব্যবহার করতে হয় তবে এটি ব্যবহার করুন: sp_msforeachtable "ALTER TABLE? ALL Disable All All" যান
জন ডায়ার

71

আগের লাইনটি একটি দিয়ে শেষ করা দরকার ;কারণ এসকিউএল DISABLE তে কোনও কীওয়ার্ড নয় । উদাহরণ স্বরূপ:

BEGIN
;
DISABLE TRIGGER ...

10
আমি এই উত্তরটি বেশি পছন্দ করি। এটি সমস্যার সমাধান করে এবং কাজের সমাধানের পরিবর্তে সমাধান দেয়। কাজের ক্ষেত্রগুলির স্থান থাকলেও এটি বোঝা গুরুত্বপূর্ণ যে কোনও প্রসঙ্গ ছাড়াই অন্ধভাবে অনুসরণ করার পরিবর্তে কেন ত্রুটি ঘটেছে।
বাইপেইন্টার

13

মার্ক যেমন উল্লেখ করেছেন, পূর্ববর্তী বিবৃতিটি আধা-কোলনে শেষ করা উচিত। সুতরাং আপনি ব্যবহার করতে পারেন:

; DISABLE TRIGGER dbo.tr_name ON dbo.table_name

2

একটি নতুন লাইনে সক্ষম ট্রিগার বা অক্ষম ট্রিগার পরে GO লিখুন, উদাহরণ:

DISABLE TRIGGER dbo.tr_name ON dbo.table_name

GO
-- some update statement

ENABLE TRIGGER dbo.tr_name  ON dbo.table_name

GO

0

ট্রিগারগুলি সক্ষম বা অক্ষম করার জন্য নীচে ডায়নামিক স্ক্রিপ্ট রয়েছে।

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

0

আপনি যদি সরাসরি সক্ষম থেকে ট্রিগার কার্যকর করতে চান:

আমরা এভাবে লিখতে পারি না:

Conn.Execute "ENABLE TRIGGER trigger_name ON table_name"

পরিবর্তে, আমরা লিখতে পারি:

Conn.Execute "ALTER TABLE table_name DISABLE TRIGGER trigger_name"

-1

নীচে সহজ উপায়

কোড চেষ্টা করে দেখুন

ALTER TRIGGER trigger_name DISABLE

এটাই :)


এসকিউএল সার্ভার> 2008 আর 2 এ কাজ করছেন না এবং প্রশ্নটি এমএস এসকিউএল সার্ভারের জন্য
কুকলে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.