ฉันมีสองรุ่น A และ B โดย A มี B จำนวนมาก เดิมทีทั้ง A และ B มีช่องคีย์หลักแบบเพิ่มค่าอัตโนมัติที่เรียกว่า id และ B มีช่อง a_id ตอนนี้ฉันพบว่าตัวเองต้องการลำดับตัวเลขที่ไม่ซ้ำกันสำหรับ B แต่ละตัวภายใน A ฉันกำลังติดตามสิ่งนี้ภายในแอปพลิเคชันของฉัน แต่แล้วฉันก็คิดว่ามันอาจสมเหตุสมผลกว่าถ้าปล่อยให้ฐานข้อมูลจัดการมัน ฉันคิดว่าฉันสามารถให้คีย์ผสมแก่ B โดยที่องค์ประกอบแรกคือ a_id และองค์ประกอบที่สองเพิ่มขึ้นอัตโนมัติ โดยคำนึงถึง a_id ดังนั้นหากฉันแทรกสองระเบียนด้วย a_id 1 และอีกระเบียนหนึ่งด้วย a_id 2 ฉันจะได้ดังนี้:
a_id | other_id
1 | 1
1 | 2
2 | 1
หากลบรหัสที่มีตัวเลขต่ำกว่า ลำดับไม่ควรนำตัวเลขเหล่านี้กลับมาใช้ใหม่ ดังนั้นหาก (1, 2) ถูกลบ:
a_id | other_id
1 | 1
2 | 1
เมื่อเพิ่มระเบียนถัดไปด้วย a_id 1 ตารางจะมีลักษณะดังนี้:
a_id | other_id
1 | 1
2 | 1
1 | 3
ฉันจะทำสิ่งนี้ใน SQL ได้อย่างไร มีเหตุผลไหมที่จะไม่ทำอะไรแบบนี้?
ฉันกำลังใช้ H2 ในหน่วยความจำ (การทดสอบและพัฒนา) และ PostgreSQL 9.3 (เวอร์ชันที่ใช้งานจริง)