วันอังคารที่ 17 กุมภาพันธ์ พ.ศ. 2558

RESTRICT, No Action, CASCADE, Set Null, Set Default ต่างกันอย่างไร

- RESTRICT เป็นค่า default คือ ไม่อนุญาติให้ ลบ หรือ แก้ไข ค่าข้อมูล ใน PRIMARY KEY ได้

ถ้ายังมีค่าข้อมูลใน FOREIGN KEY อยู่ ต้องไปลบ row ที่ใช้ ข้อมูลจาก Primary key นั้นๆก่อนครับ

- No Action คล้ายๆกับ RESTRICT ครับ คือไม่อนุญาติให้ ลบ หรือ แก้ไข ค่าข้อมูล ใน PRIMARY KEY ได้
ถ้ายังมีค่าข้อมูลใน FOREIGN KEY อยู่ จะมีการตรวจสอบแถวที่มีการอ้างอิงถึงในตอนท้ายของ statement

- CASCADE คือ ถ้ามีการลบหรือแก้ไขค่าข้อมูลใน PRIMARY KEY แล้วค่าข้อมูลใน FOREIGN KEY จะเปลี่ยนแปลงตาม

- SET NULL คือ ถ้ามีการลบหรือแก้ไขค่าข้อมูลใน PRIMARY KEY แล้วค่าข้อมูลใน FOREIGN KEY จะเป็นค่า NULL

- SET DEFAULT คล้ายๆกับ SET NULL ครับ เพียงแค่ เมื่อมีการลบ ข้อมูล Primary Key ทิ้งแล้วข้อมูลที่ถูกอ้างอิงจะเปลี่ยนเป็น ค่าที่ถูกตั้งไว้ เช่นเมื่อข้อมูลที่อ้างอิงถูกลบ column ที่ FK มาจะให้กลายเป็น ค่า "0" 



อ้างอิงจาก http://code.function.in.th/sql/constraint

http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_53/sqlp/rbafyrfdeleting.htm?lang=th

http://www-01.ibm.com/support/knowledgecenter/api/content/ssw_ibm_i_53/sqlp/rbafyrfupdating.htm#rbafyrfupdating

0 ความคิดเห็น :

แสดงความคิดเห็น