sql >> データベース >  >> RDS >> Sqlserver

SQL Server は ID 列の値をどのように生成しますか?

    あなたはテーブルの順序を仮定するというよくある誤りを犯しています。テーブルには順序がありません。結果のみに順序があり、明示的な ORDER BY が指定されない限り決定されません。

    別の質問をするかもしれません:同時挿入の場合、id によって生成された値はどのように割り当てられますか?答えは簡単です:関係ありません .また、順序について何らかの仮定を行うと、コードが壊れます。ギャップも同様です。生成された ID が完全にランダムであってもアプリケーションは動作するはずであり、正しく記述されたアプリケーションは動作します。 ID が完全にランダムな場合に機能します。 SCOPE_IDENTITY() を使用します 最後に挿入された ID を取得します。さらに良いことに、OUTPUT を使用します。 INSERT の節 、複数行の挿入にも機能します。

    記録のために:ID は、オペレーションが ログ ストリーム .




    1. Oracle:部分的な外部結合が必要です。画像を見てください

    2. PostgreSQL-リレーションのポリシーで無限再帰が検出されました

    3. 別のシステムとの統合

    4. 最後に挿入されたレコードのIDを取得する-DAO、ODBC、SQL Server2008IDフィールドにアクセスする