|
まだまだある不可思議機能あれこれ。
SQL Serverのidentity列もそのひとつです。
これは要するにMicrosoft Access時代からあるオートナンバー型、
つまり自動でカウントアップして絶対に同じ値が入らない列なんでしょうけど、
今一つ有効性に疑問があります。
あったらあったで問題はないのですが、OracleのSequenceに比べると柔軟性が足りない。
特にプログラムを作る我々からするとよく見えてこない部分が多いのです。
OracleのSequenceは1つのデータ型であり、実際はクラスとして実装されているので、
使うときはメソッド(関数)として呼び出して、任意の数値型列に保有します。
しかしidentity列はint型の列の1属性です。
もちろん開始値や増分値は設定できるのですが、
その設定のタイミングがどうやら行挿入時っぽい。
それではプログラム側でコントロールできる範囲がすごく狭くなります。
(Oracleは自分で取得した値をセットするという実装になっている)
もしかすると本当はもっといろいろな使い方があるのかもしれないのですが、
少なくともOracleのSequenceを初めて使ったときは、
その使い方に悩んだりしたことはありません。
必要最低限のやり方はすぐわかりましたし、高度な機能も自然に習得できました。
それもこれも機能を細分化した上で、それをまとめて提供してくれているからです。
どちらかというとUNIX、C、そしてJavaの系等の発想です。
Microsoft製品はすべてにおいて
「ウチのやり方が一番なんだから、黙って従っていれば問題ない」
とうい風に感じられます。
未だに好きになれない(というか日ごと嫌いになる)のはそういうアメリカンな発想です。
これまでで「傑作かも」と唯一思ったのはExcel97ですかね。
それ以降にExcelに追加された機能はほとんどムダ機能です。
(便利になったのは一部セル連結が柔軟になったところぐらい。)
そんなことしてるヒマがあったら「絶対に落ちないExcel作れ」って思います。
|