SQLServerやPostgreSQLを使うことしかなくなって
(なぜか僕の案件ではMySQLの遭遇が少ない)、
AutoIncrementやらSerialをユニークキーにする設計が当たり前になっていて
RealmでSerial使えないことがちょっと不便に感じていた。
純粋に個人のデータとして設計する場合わざわざSerialのような値を持つ必要がなかったりするので、設計上Serialの必要性を排除できることが多いんだけど、それでもあると便利な時がある。
これを解決する方法の一つとして考えられるのが、
1997年くらいのときまで僕が先輩のテーブル設計でよく見かけていた
採番テーブル
構造は簡単で
列名 | 型 |
---|---|
シーケンスのオブジェクト名に当たるユニークな名称 | String |
現在のシーケンス値 | Integer |
というシンプルな構造で、このデータにアクセスすることで擬似的にシーケンスを作り出していた。
みただけで「あ。。。(察し)」なんだけど、ポイントがあるとすると
同一更新を排除するためにレコードロックをかけて更新すること。
くらいか。昔のクラサバとかだと、同時更新されることもあるからね。
どこかで誰かの役に立つことがあれば。