วิธีตั้งค่า และลบ FOREIGN KEY โดยใช้ SQL query

ต่อเนื่องจากหัวข้อ “วิธีตั้งค่า และลบ FOREIGN KEY โดยใช้ phpMyAdmin”
หลังจากที่เราเรียนรู้วิธีจาก phpMyAdmin แล้วเรามาลองเรียนรู้วิธีตั้งค่า และลบ FOREIGN KEY โดยใช้ SQL query
เพื่อใช้ในกรณีที่ต้องการตั้งค่า FK เป็นจำนวนมากๆ พร้อมๆกัน และอาจจะต้องทำซ้ำหลายๆ ครั้ง

ขั้นตอนที่ 1 เรามาเรียนรู้ รูปแบบคำสั่ง ที่ใช้ตั้งค่ากันก่อน คำสั่งที่ใช้ในที่นี้คือ ALTER
รูปแบบการตั้งค่ามีดังนี้

[CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name, …)
REFERENCES tbl_name (index_col_name,…)
[ON DELETE reference_option]
[ON UPDATE reference_option]

reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION

(อ้างอิงจาก https://dev.mysql.com/doc/refman/5.5/en/create-table-foreign-keys.html)

เช่น ALTER TABLE `ad_app_choosecourse`
ADD FOREIGN KEY ( `acc_crs_id`) REFERENCES `temp`.`ad_course` (`crs_id`) ON DELETE RESTRICT ON UPDATE RESTRICT ;

อธิบายได้ว่า
ALTER TABLE `ad_app_choosecourse` ต้องการแก้ไขตาราง ad_app_choosecourse
ADD FOREIGN KEY ( `acc_crs_id`)        เพิ่ม FK ที่ฟิลด์ acc_crs_id
REFERENCES `temp`.`ad_course` (`crs_id`)     อ้างอิงไปยัง ฐานข้อมูล temp ตาราง ad_course ฟิลด์ crs_id
ON DELETE RESTRICT ON UPDATE RESTRICT  คำสั่งนี้เป็นการบอกว่าจะให้ FK เปลี่ยนแปลงไปแบบไหนเมื่อค่าต้นทางมีการเปลี่ยนแปลง ในรายละเอียดจะขออธิบายในภายหลังนะครับ

และนี่คือคำสั่งที่ใช้สำหรับตั้งค่า FOREIGN KEY โดยใช้ SQL query

ขั้นตอนที่ 2 เรามาเรียนรู้ รูปแบบคำสั่ง ที่ใช้ลบ FK คำสั่งที่ใช้ในที่นี้คือ ALTER เช่นกัน
เช่น
ALTER TABLE `ad_app_choosecourse` DROP FOREIGN KEY `ad_app_choosecourse_ibfk_3` ;

อธิบายได้ว่า
ALTER TABLE `ad_app_choosecourse`                             ต้องการแก้ไขตาราง ad_app_choosecourse
DROP FOREIGN KEY `ad_app_choosecourse_ibfk_3` ลบ FK ที่มีชื่อว่า ad_app_choosecourse_ibfk_3