ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 420|ตอบกลับ: 0

การ insert ข้อมูลลง ms SQL server แบบ multi user โดยที่ PK ไม่ซ้ำกัน

[คัดลอกลิงก์]

1

กระทู้

15

โพสต์

79

เครดิต

Member

Rank: 2

เครดิต
79
โพสต์ 2020-7-11 11:40:22 จากอุปกรณ์พกพา | ดูโพสต์ทั้งหมด |โหมดอ่าน

ผมลอง insert ข้อมูลตามหัวข้อกระทู้ โดยใช้ loop forในการ insert ข้อมูลลง db จากสองเครื่องพร้อม ผลที่ได้ มันยังมีค่าที่ซ้ำกันครับ ขอคำแนะนำด้วยครับ

252

กระทู้

367

โพสต์

3066

เครดิต

ผู้ดูแลระบบ

Rank: 9Rank: 9Rank: 9

เครดิต
3066
โพสต์ 2020-7-11 15:25:28 | ดูโพสต์ทั้งหมด

ไม่รู้ว่าออกแบบตารางข้อมูลเหมือนผมหรือเปล่าครับ ผมแยก Primary Key ออกจาก ID (Identifier) ออกจากกัน และใช้ Flow Control เป็นตัวควบคุม สมมุติเวลาที่ User เลือกสร้างรหัสพนักงาน (ID) แบบอัตโนมัติ ก็จะเกิดการคำนวณหาจาก PK เช่น EMP0001 ... ผมจะสมมุติตัวอย่างไล่เรียงดังนี้ ...
1. User A เข้ามาก่อน แล้วทำการสร้างรายการพนักงานขึ้นมาใหม่แบบอัตโนมัติ สมมุติคือ EMP0001 ...
2. User B เข้ามาตามหลังก็จะทำการสร้างรหัสพนักงานใหม่อัตโนมัติเช่นกัน ก็จะได้ EMP0001 ...
3. User B ทำการบันทึกข้อมูลก่อน ก็จะไม่มีปัญหาใดๆ
4. User A จะทำการบันทึกข้อมูลไม่ได้ เพราะดักเช็ค ID ก่อน ทำให้มี ID ซ้ำกันกับของเดิม โปรแกรมก็จะแจ้งเตือน และทำการสร้างใหม่ให้อัตโนมัติ ก็จะกลายเป็น EMP0002 (ในภาพประกอบ ผมไม่ได้ใส่ไว้ แต่ให้ User เขาเลือกกดให้รันรหัสใหม่อีกครั้งเอง)
5. เมื่อรหัส ID ไม่ซ้ำกัน ก็จะไปคำนวณหา Primary Key ก่อนทำการบันทึกผล (SaveData) ...

เมื่อทำดังนี้ต่อให้มี User C เข้ามาเพิ่มรายใหม่เข้าไปก่อน User B จะประมวลเสร็จ มันก็จะย้อนวนรอบกลับไปที่ข้อ 4 ...
CheckPK.jpg
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

1

กระทู้

15

โพสต์

79

เครดิต

Member

Rank: 2

เครดิต
79
 เจ้าของ| โพสต์ 2020-7-11 15:42:02 จากอุปกรณ์พกพา | ดูโพสต์ทั้งหมด

ขอบคุณครับ ผมจำลอง insert เข้า table เดียว 2 field ครับ
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2020-9-21 08:59 , Processed in 0.261089 second(s), 5 queries , File On.

Powered by Discuz! X3.3 R20170401, Rev.54

© 2001-2017 Comsenz Inc.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้