เปลี่ยน Primary Key หลาย ๆ ตาราง
กระทู้เก่าบอร์ด อ.Yeadram

 1,479   4
URL.หัวข้อ / URL
เปลี่ยน Primary Key หลาย ๆ ตาราง

หากมีข้อมูลดังต่อไปนี้ (ในการทำงานจริง จะมี field มากกว่านี้ค่ะ)

ตาราง TCustomer มีข้อมูลดังนี้

CustID(Text -Primary key)     CustName
123             นายทดสอบ
124             นางสายเสมอ
225             น.ส.สุดสาย
AAA             นายลองดี

ตาราง TDetail       มีข้อมูลดังนี้

CustID(Text -Primary key)       Desp
123               ร่วมทดสอบ
225               งดทดสอบ
AAA               ระหว่างทดลอง

ถ้าต้องการเปลี่ยน CustID ในตาราง TCustomer จาก AAA เป็น 128 โดยให้ข้อมูล CustName ยังเหมือนเดิม และต้องการให้ AAA ในตาราง TDetail เปลี่ยนแปลงด้วย โดยข้อมูลอื่น ๆ ยังคงเดิมเช่นกัน สามารถทำได้หรือไม่ โดยเมื่อเปลี่ยนแล้วจะได้ข้อมูลทั้ง 2 ตารางดังนี้ค่ะ

ตาราง TCustomer มีข้อมูลดังนี้

CustID(Text)    CustName
123             นายทดสอบ
124             นางสายเสมอ
225             น.ส.สุดสาย
128             นายลองดี

ตาราง TDetail       มีข้อมูลดังนี้

CustID(Text)      Desp
123               ร่วมทดสอบ
225               งดทดสอบ
128               ระหว่างทดลอง

ขอบคุณค่ะ

4 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R01922
ถ้าสองตารางนี้มีความสัมพันธ์กันแบบ one-many ให้เปลี่ยนตามลำดับ
คือต้องเปลี่ยนข้อมูลฝั่ง one ก่อนแล้วค่อยไปเปลี่ยนฝั่ง many ตามไปด้วย
หรืออาจไม่ต้อง เปลี่ยนข้อมูลฝั่ง many เลยก็ได้ กรณีที่ตั้งค่าความสัมพันธ์ไว้ก่อนล่วงหน้า เพราะข้อมูลมันจะเปลี่ยนตามกันไปอัตโนมัติครับ

2 @R01923

จากรูปที่สองนี้ คุณลองเปิดสองตารางที่มีความสัมพันธ์ดังกล่าวมาพร้อมๆ กันดังนี้ แล้วลองเปลี่ยนข้อมูล ฝั่ง one ดู จะเห็นทันทีว่า ข้อมูลในฝั่ง many เปลี่ยนตามไปด้วยโดยอัตโนมัติ

เพราะฉะนั้น งานของคุณก็มีแค่งานเดียว คือ สั่งอัพเดต ตารางฝั่ง one

Update TCustomer set CustID = "128" Where CustID = "AAA";

แต่ถ้าคุณไม่ได้ตั้งค่าความสัมพันธ์ไว้ดังที่กล่าว คุณก็แค่เพิ่มงานเข้าไปอีก 1 จังหวะ
Update TDetails Set CustID="128" Where CustID = "AAA";

ปล. เท่าที่สังเกตุจากข้อมูลตัวอย่าง แม้ว่าสองตารางนี้จะไม่ได้ตั้งค่าความสัมพันธ์ "ปรับปรุงระเบียนที่เกี่ยวข้องทั้งหมด" แต่ก็ควร กระทำกับ TCustomer ก่อนจะดีกว่าครับ
3 @R01925
ขอบคุณค่ะ เข้าใจแล้วค่ะ อาจารย์อธิบายละเอียดดีค่ะ
4 @R01927
ถามคำถามได้ชัดเจนดีครับ คนตอบเข้าใจความต้องการของผู้ถาม ก็ตอบได้ง่าย เร็ว และไหลลื่นไปเรื่อยแหละครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3192s