কম্পিউটার টিউটোরিয়াল

MySQL-এ FOREIGN_KEY_CHECKS সেটিং চেক করা (ON/OFF)

MySQL-এ ফরেন কি চেক সক্রিয় (1/ON) কিনা যাচাই করতে দুটি পদ্ধতি ব্যবহার করা যায়: সেশন ভেরিয়েবল বা SHOW VARIABLES।

পদ্ধতি ১: সেশন ভেরিয়েবল

SELECT @@foreign_key_checks;

আউটপুট

+----------------------+
| @@foreign_key_checks |
+----------------------+
| 1                    |
+----------------------+

1 = ON (সক্রিয়), 0 = OFF (নিষ্ক্রিয়)।

পদ্ধতি ২: SHOW VARIABLES

SHOW VARIABLES LIKE 'foreign_key_checks';

আউটপুট

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| foreign_key_checks | ON    |
+--------------------+-------+

FOREIGN_KEY_CHECKS কখন OFF করবেন

  • বড় ডেটা ইম্পোর্ট/রিস্টোর সময় (স্পীড বাড়াতে)
  • টেবিল ট্রাঙ্কেট/ড্রপ করলে ফরেন কি এরর এড়াতে
  • ডেটা মাইগ্রেশন বা স্কিমা পরিবর্তন সময়

OFF/ON করা

-- OFF (নিষ্ক্রিয়)
SET FOREIGN_KEY_CHECKS = 0;
-- বা
SET @@foreign_key_checks = 0;

-- ON (সক্রিয়) — খুব জরুরি: কাজ শেষে অবশ্যই ON করুন
SET FOREIGN_KEY_CHECKS = 1;
SET @@foreign_key_checks = 1;

গ্লোবাল vs সেশন

SET GLOBAL foreign_key_checks = 0;  -- সব কানেকশনের জন্য (SUPER privilege লাগে)
SET SESSION foreign_key_checks = 0; -- শুধু বর্তমান কানেকশনের জন্য

সতর্কতা

FOREIGN_KEY_CHECKS = 0 থাকা অবস্থায় ডেটা ইনসার্ট/আপডেট করলে অরফান রেকর্ড (orphan records) তৈরি হতে পারে। কাজ শেষে অবশ্যই 1 সেট করুন এবং ডেটা ইন্টিগ্রিটি যাচাই করুন:

SELECT * FROM child_table c
LEFT JOIN parent_table p ON c.parent_id = p.id
WHERE p.id IS NULL;
  1. MySQL-এ প্রাইমারি কী রিসেট করা (TRUNCATE + ALTER TABLE)

  2. MySQL-এ প্রাইমারি কীকে অন্য টেবিলে ফরেন কী হিসেবে রেফার করা

  3. MySQL-এ ফরেন কি ব্যবহার (Using Foreign Keys in MySQL)

  4. SQL Server-এ ফরেন কি Set Null On Delete সহ