Saya memiliki dua model, A dan B. A memiliki banyak B. Awalnya, A dan B memiliki bidang kunci utama yang bertambah secara otomatis yang disebut id, dan B memiliki bidang a_id. Sekarang saya mendapati diri saya membutuhkan urutan angka unik untuk setiap B dalam A. Saya mencatat hal ini dalam aplikasi saya, tapi kemudian saya berpikir akan lebih masuk akal jika membiarkan database mengurusnya. Saya pikir saya bisa memberikan B kunci gabungan di mana komponen pertama adalah a_id dan komponen kedua bertambah secara otomatis, dengan mempertimbangkan a_id. Jadi jika saya memasukkan dua catatan dengan a_id 1 dan satu dengan a_id 2 maka saya akan memiliki sesuatu seperti:
a_id | other_id
1 | 1
1 | 2
2 | 1
Jika id dengan angka lebih rendah dihapus, maka urutannya tidak boleh mendaur ulang angka-angka ini. Jadi jika (1, 2) terhapus:
a_id | other_id
1 | 1
2 | 1
Ketika record berikutnya dengan a_id 1 ditambahkan, tabel akan terlihat seperti:
a_id | other_id
1 | 1
2 | 1
1 | 3
Bagaimana saya bisa melakukan ini di SQL? Apakah ada alasan untuk tidak melakukan hal seperti ini?
Saya menggunakan H2 dalam memori (pengujian dan pengembangan) dan PostgreSQL 9.3 (produksi).