সমস্ত বিদেশী কী অক্ষম ও সক্ষম করা ab
CREATE PROCEDURE pr_Disable_Triggers_v2
@disable BIT = 1
AS
DECLARE @sql VARCHAR(500)
, @tableName VARCHAR(128)
, @tableSchema VARCHAR(128)
-- List of all tables
DECLARE triggerCursor CURSOR FOR
SELECT t.TABLE_NAME AS TableName
, t.TABLE_SCHEMA AS TableSchema
FROM INFORMATION_SCHEMA.TABLES t
ORDER BY t.TABLE_NAME, t.TABLE_SCHEMA
OPEN triggerCursor
FETCH NEXT FROM triggerCursor INTO @tableName, @tableSchema
WHILE ( @@FETCH_STATUS = 0 )
BEGIN
SET @sql = 'ALTER TABLE ' + @tableSchema + '.[' + @tableName + '] '
IF @disable = 1
SET @sql = @sql + ' DISABLE TRIGGER ALL'
ELSE
SET @sql = @sql + ' ENABLE TRIGGER ALL'
PRINT 'Executing Statement - ' + @sql
EXECUTE ( @sql )
FETCH NEXT FROM triggerCursor INTO @tableName, @tableSchema
END
CLOSE triggerCursor
DEALLOCATE triggerCursor
প্রথমত, বিদেশীকি কার্সার কার্সারটিকে SELECT বিবৃতি হিসাবে ঘোষণা করা হয় যা বিদেশী কীগুলির তালিকা এবং তাদের সারণির নাম সংগ্রহ করে। এর পরে, কার্সারটি খোলে এবং প্রাথমিক FETCH বিবৃতি কার্যকর করা হয়। এই FETCH বিবৃতিটি প্রথম সারির ডেটা স্থানীয় ভেরিয়েবল @ ফায়ারফাইনকি-নেম এবং @ টেবিলনামে পড়বে। কার্সারের মাধ্যমে লুপ করার সময় আপনি 0 টি মানের জন্য @@ FETCH_STATUS টি পরীক্ষা করতে পারেন, যা ইঙ্গিত দেয় যে আনতে সফল হয়েছিল। এর অর্থ লুপটি এগিয়ে যেতে থাকবে যাতে এটি সারি থেকে প্রতিটি ক্রমাগত বিদেশী কী পেতে পারে। সংযোগে সমস্ত কার্সারের জন্য @@ FETCH_STATUS উপলব্ধ। সুতরাং আপনি যদি একাধিক কার্সারের মাধ্যমে লুপিং করে থাকেন তবে FETCH বিবৃতি অনুসরণ করার সাথে সাথেই বিবৃতিতে @@ FETCH_STATUS এর মান পরীক্ষা করা গুরুত্বপূর্ণ। @@ FETCH_STATUS সংযোগের ক্ষেত্রে সাম্প্রতিকতম FETCH অপারেশনের স্থিতি প্রতিফলিত করবে। @@ FETCH_STATUS এর জন্য বৈধ মানগুলি হ'ল:
0 = FETCH সফল ছিল
-1 = FETCH ব্যর্থ ছিল
-2 = যে সারিটি পাওয়া গেছে তা অনুপস্থিত
লুপের অভ্যন্তরে, কোডটি বিদেশী কী সীমাবদ্ধতা অক্ষম করা বা সক্ষম করতে হবে (CHECK বা NOCHECK কীওয়ার্ড ব্যবহার করে) উদ্দেশ্যটি নির্ভর করে ভিন্নভাবে ALTER TABLE কমান্ডটি তৈরি করে। বিবৃতিটি তখন একটি বার্তা হিসাবে মুদ্রিত হয় যাতে এর অগ্রগতি লক্ষ্য করা যায় এবং তারপরে বিবৃতি কার্যকর করা হয়। অবশেষে, যখন সমস্ত সারি পুনরায় পুনরুক্ত করা হয়, সঞ্চিত প্রক্রিয়া কার্সারটি বন্ধ করে এবং ডিলোকোট করে।
এমএসডিএন ম্যাগাজিন থেকে নিষ্ক্রিয় সীমাবদ্ধতা এবং ট্রিগারগুলি দেখুন