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;