MySQL-এ একটি টেবিলের প্রাইমারি কীকে অন্য টেবিলের ফরেন কী হিসেবে রেফার করতে ALTER TABLE ... ADD CONSTRAINT ... FOREIGN KEY ব্যবহার করা হয়।
সিনট্যাক্স
ALTER TABLE yourSecondTableName ADD CONSTRAINT `yourConstraintName` FOREIGN KEY (`yourSecondTablePrimaryKey`) REFERENCES yourFirstTableName(yourFirstTablePrimaryKeyColumnName);
উদাহরণ
প্রথম টেবিল (demo65):
CREATE TABLE demo65 (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(20)
);
দ্বিতীয় টেবিল (demo66):
CREATE TABLE demo66 (
user_id INT NOT NULL PRIMARY KEY,
address VARCHAR(200)
);
ফরেন কী যোগ করা
ALTER TABLE demo66 ADD CONSTRAINT `id_fk` FOREIGN KEY (`user_id`) REFERENCES demo65(id);
যাচাই করা
SHOW CREATE TABLE demo66;
আউটপুট
+--------+-----------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +--------+-----------------------------------------------------------------------------------------------------------------------------------+ | demo66 | CREATE TABLE `demo66` ( `user_id` int NOT NULL, `address` varchar(200) DEFAULT NULL, PRIMARY KEY (`user_id`), CONSTRAINT `id_fk` FOREIGN KEY (`user_id`) REFERENCES `demo65` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci | +--------+-----------------------------------------------------------------------------------------------------------------------------------+
ব্যাখ্যা:
CONSTRAINT `id_fk`- কনস্ট্রেইন্টের নাম (ঐচ্ছিক, অটো জেনারেট হয় যদি না দিন)।FOREIGN KEY (`user_id`)- demo66 টেবিলের কলাম।REFERENCES demo65(id)- demo65 টেবিলের প্রাইমারি কী কলাম।- উভয় কলাম একই ডেটা টাইপের হতে হবে (এখানে INT)।
- InnoDB স্টোরেজ ইঞ্জিন ফরেন কী সাপোর্ট করে।
এটি রেফারেনশিয়াল ইন্টিগ্রিটি নিশ্চিত করে: demo66-এ এমন user_id ইনসার্ট করা যাবে না যা demo65-এ নেই।