備忘録:SEQUENCEとIDENTITIYと (21.9.1)
歴史の息づくDBシステムを触っていた時のこと。
メインテーブルのIDは、最大値を別テーブルに保管していて、
新規採番時は「+1」で最新値を決定する仕組みになっていたのだが、
サブテーブルのIDではその方式は取られておらず、
はたまたシーケンスを使っている訳でもない。
それでもデータを作成したり更新したりしてみると、
IDは確実にレベルアップカウントアップしていく。
はて、とプログラムソースを右往左往した末にテーブル定義を確認してみると、
該当するIDのカラムにIDENTITYプロパティが設定されている。
ぱっと見はUNIQUE制約的なアレかと思ってスルーしたのだが、
インターネットの海を漂っているうちに、
Accessにはオートナンバー型という自動採番してくれる奴がいる、
と囁いてくれる親切な人が居て、
さらにSQL ServerのIDENTITYプロパティはAccessのオートナンバー型に相当する、
と解説してくれる親切な人も居て、
このIDENTITIYで自動的にID発番していたのか、となった次第。
Oracleの9i~10g~11gしか触ってきておらず、
SEQUENCE一本槍で育ってきたため存じ上げない存在だったが、
Oracleでも12cからはIDENTITYプロパティが使用できるようになったらしい。
ちなみに、SEQUENCEとIDENTITIYとでは、
テーブルに紐づいているか独立しているかが大きな違いだが、
詳しく知りたい人はGoogle先生経由で親切な人に教えてもらおう。
むぎわら