23 September 2014

กำหนด FOREIGN KEY ใน Mysql ครับ

Storage Engine: ของตารางต้องเป็น InnoDB ก่อนนะครับ ถึงจะสามารถ add ได้

คำสั่ง SQL

ALTER TABLE `ตารางที่ต้องการกำหนด`  ADD CONSTRAINT `ชื่อของการเชื่อมต่อ`
FOREIGN KEY ( `ชื่อของ attribute ของตารางที่จะกำหนด `)
REFERENCES `ชื่อตารางเป้าหมาย` ( `ชื่อของ attribute ของตารางเป้าหมาย` )
ON DELETE CASCADE ON UPDATE CASCADE;
----------------------------------------------------------------------------------------------------------------
ตัวอย่าง
ALTER TABLE `room` ADD FOREIGN KEY (`id`) REFERENCES `asset`.`area`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
----------------------------------------------------------------------------------------------------------------

ON DELETE CASCADE ON UPDATE CASCADE
เป็นการกำหนดว่า เมื่อ แก้ไข หรือ ลบ
แถวใน Primary KEY จะทำให้มีส่วนเปลี่ยนแปลง ที่ตาราง Foreign KEY ด้วย

แต่ถ้าไม่กำหนด คำสั่งข้างต้น จะทำให้ ไม่มีผล แต่กลับจะมีผลว่า เมื่อคุณต้องการที่จะลบข้อมูลใน Foreign KEY คุณจะต้องลบที่ Primary KEY ก่อนเสมอ ไม่อย่างนั้นจะลบไม่ได้ นะครับ