A-AA+then

การลบข้อมูล เพิ่ม แก้ไข ข้อมูที่ถูกใช้งาน ข้อมูลที่ซ้ำกัน

1,594
การลบข้อมูล เพิ่ม แก้ไข ข้อมูที่ถูกใช้งาน ข้อมูลที่ซ้ำกัน
การลบข้อมูล ต้องวิ่งไปตรวจสอบ ตารางที่ถูกมีการใช้งานด้วย หากมีการใช้งานอยู่จะต้องลบไม่ได้ (เช่น PK ของตารางหนึ่งที่ไปเป็น FK อีกตารางหนึ่ง หาจะลบตารางหลัก PK จะต้องวิ่งไปตรวจสอบว่ามีการเอา PK นี้ไปเป็น FK ที่ไหน บ้าง ตารางไหนบ้าง หากมีการเรียกใช้ PK ไปเป็น FK แล้ว ให้ Alert บอกว่า ไม่สามารถลบได้ เพราะอะไร ด้วย

การเพิ่มข้อมูลก็เหมือนกันถ้าข้อมูลซ้ำไม่สามารถเพิ่มได้

การแก้ไขข้อมูลก็ไม่สามารถแก้ไขได้ 

ขอโค๊ดสักนิดเพื่อไปศึกษาหน่อยนะครับ หรือจะอธิบายเป็นแนวคิดให้ก็ได้นะครับ

ถ้าจะลบตารางที่ 2 ให้ตรวจสอบว่า ตารางที่ 1 ใช้งานหรือไม่ ถ้าใช้งานไม่สามารถลบได้ ประมาณนี้นะครับ
ถ้าจะเพิ่มก็ตรวจสอบว่ามีข้อมูลอยู่แล้วหรือไม่ ถ้าซ้ำไม่สามารถเพิ่มได้ครับ ขอบคุณครับ

***ขอโค๊ดตัวอย่างสักนิดนึงติดหลายวันและ***

2 ความคิดเห็น

ผมก็ไม่รู้ว่าเงื่อนไขการเป็นอย่างไร เพียงแต่ว่าในลักษณะงานเช่นนี้

บางทีการตรวจสอบขณะแก้ไขหรือลบก็อาจยุ่งยาก หรือต้องเขียน query ซับซ้อน ทางที่ดีควรจะ query แล้วตรวจสอบด้วย PHP ว่าสามาร แก้ไข หรือ ลบได้หรือเปล่า จะง่ายกว่า เช่นการ query ตามปกติ แล้วแสดงเครื่องหมายตามความสามารถ เช่น ลบได้หรือไม่ แก้ไขได้หรือไม่

ในขณะที่บันทึกหรือลบก็เช่นกันครับ ให้ทำการตรวจสอบด้วย query ตามปกติ แล้วตรวจสอบว่า ลบหรือแก้ไข ได้หรือไม่ ก่อนจะอณุญาติให้ดำเนินการจะเป็นการดีกว่าครับ ซึ่งรวมถึงการแสดงผลการดำเนินว่า รายการนี้ไม่สามารถลบได้ด้วย

วิธีการ query ก็ใช้การ join ธรรมดานี่แหละครับ อาจจะเป็น inner join, left join right join หรือ outer join ก้ได้ ลองเลือกใช้ให้ถูก

ยกตัวอย่าง

1.ตอนแสดง list รายชื่อสมาชิก ใช้ left join เมื่อให้แสดงทุกรายชื่อ รวมถึงรายชื่อ ที่จับคู่ไม่ได้
2.แสดง icon delete ในรายการที่ จับคู่ไม่ได้ และ แสดง icon edit ในรายการที่จับคู่ได้

การลบหรือแก้ไข ก่อนจะลบหรือแก้ไข ให้ตรวจสอบ ว่าสามารถลบหรือแก้ไขได้หรือไม่ ตามวิธีเดียวกับการแสดงผลครับ แต่ query เฉพาะรายการที่ดำเนินการเท่านั้น แล้วใช้ php ตรวจสอบ ว่าดำเนินการได้หรือไม่ ถ้าไม่ ก็แสดงข้อผิดพลาด ถ้าได้ก็ดำเนินการไปครับ

ถ้าจะสังเกตุ วิธีการที่ผมใช้จะไม่ซับซ้อน และตรงไปตรงมา ซึ่งข้อดีคือ ทำงานเร็ว ไม่สับสน และเข้าใจง่าย ครับ
1

ขอบคุณครับ
2
^