問題タブ [identity-column]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3542 参照

sql - SQL Server の @@Identity のように、MS-Access で最後に自動インクリメントされた値を取得する方法

自動インクリメントされた列からミリ秒アクセスで ID 列の値を取得したいと考えています。基本的に、2 つの挿入クエリを作成する必要があるトランザクションを実行しています。2 番目のクエリには、クエリ 1 から生成された自動インクリメント値が含まれます。

0 投票する
6 に答える
2471 参照

sql-server - ID フィールドを持つテーブル: 削除されたレコードの ID を取得するための最適な SQL クエリ?

ID フィールドを持つテーブルがあります。このテーブルから削除されたすべてのレコードの ID を取得するための最適な SQL クエリは?

0 投票する
4 に答える
26414 参照

sql-server - SQL Server で ID シードを変更する (永続的に!)

ID 列の ID シードを永続的に変更する方法はありますか? DBCC CHECKIDENT を使用すると、last_value が設定されているように見えます。テーブルが切り捨てられると、すべての値がリセットされます。

戻り値

私はいくつかの構文が

存在するでしょう。

新しい列を作成し、値を移動し、元の列を削除して、新しい列の名前を変更する必要がありますか?

0 投票する
2 に答える
8464 参照

sql-server-2005 - @@ IDENTITY vs SCOPE_IDENTITY()vsIDENT_CURRENT[SQLサーバー2005]

SQL Server 2005で最後に挿入されたレコードIDを取得するには、どちらを使用する必要がありますか?

私はstackoverflowを検索し、これを見つけました、

SQL:挿入したばかりの値のIDを取得するにはどうすればよいですか?

ベストアンサーのコメント:

SQL Server 2005のSCOPE_IDENTITY()には既知のバグがありますが、2008年についてはよくわかりません。必要に応じて、OUTPUT句で一連のIDを返すことができます...

私はSQLServer2005を使用しています...任意の提案

0 投票する
5 に答える
5266 参照

sql-server - ID フィールドを SQL Server の複数のテーブルにまたがらせることはできますか?

複数のテーブルにまたがる「ID」(一意で繰り返しのない) 列を作成できますか? たとえば、Books と Authors という 2 つのテーブルがあるとします。

BookID 列と AuthorID 列は ID 列です。ID 部分が両方の列にまたがるようにします。したがって、値が 123 の AuthorID がある場合、値が 123 の BookID は存在できません。逆もまた同様です。

それが理にかなっていることを願っています。

これは可能ですか?

ありがとう。

なぜ私はこれをしたいのですか?APS.NET MVC アプリを作成しています。コメント欄作成中です。作成者はコメントを付けることができます。本にはコメントを付けることができます。エンティティ ID (書籍 ID または著者 ID) をアクションに渡して、アクションが対応するすべてのコメントを取得できるようにしたいと考えています。アクションは、それが本であろうと著者であろうと関係ありません。合理的に聞こえますか?

0 投票する
5 に答える
770 参照

sql-server-2008 - SQLID列が2または3増加します

新しいクラスター化されたデータベースがあり、古いデータベースからテーブルにデータを移動しています。データをインポートすると、すべて正常に機能しますが、レコードを手動で挿入すると、[ID]列が次のID番号の後に続きません。たとえば、100個のレコードをテーブルにインポートすると、[ID]列に1〜100と表示されますが、データベースに手動で行を追加すると、101ではなく102または103になります。

なぜこれが起こっているのか考えはありますか?

これは私のすべてのテーブルで発生しており、ID間のギャップが最大4または5になることがあるため、非常にイライラします。

0 投票する
3 に答える
882 参照

sql - SQL SERVER 2008 の複合 IDENTITY 列

  • Orders テーブルには、CustomerId 列と OrderId 列があります。
  • 特定の理由から、注文の ID が 2 バイトを超えないようにすることが重要です。
  • 合計で数百万件の注文があるため、2 バイトではグローバル注文 ID として十分ではありません。
  • 顧客は、2 バイトで十分な数千のオーダーしか持たないでしょう。
  • 明らかな解決策は、OrderId 自体ではなく、(CustomerId, CustomerOrderNumber) を一意にすることです。

問題は、次のCustomerOrderId を生成することです。できれば、ソリューションの上位レイヤーをシンプルに保つために、顧客ごとに個別のテーブルを作成しないでください (IDENTITY 列のみが含まれている場合でも)。

Q: (CustomerId, CustomerOrderId) が一意で、CustomerOrderNumber 自体は繰り返しが許可されるように、次の OrderId をどのように生成しますか? Sql Server 2008 には、これを行うための機能が組み込まれていますか?

より適切な用語がないため、私はこれを化合物 IDENTITY 列と呼んでいます。

0 投票する
1 に答える
1682 参照

sql-server-2005 - DataAdapterの後にDataTableID列が設定されていません。「代わりに」トリガーを使用してテーブルを更新/更新します(SqlServer 2005)

単体テストでは、データベース応答を準備するためにプレーンなADO.NET(DataTable、DataAdapter)を使用します。テストされたコンポーネント自体はNHibernate2.1で実行されますが、結果を確認します。.NETバージョンは3.5、SqlServerバージョンは2005です。

データベーステーブルには、主キーとしてID列があります。一部のテーブルは、挿入/更新の代わりにトリガーを適用します(これは下位互換性のためであり、変更することはできません)。トリガーは通常、次のように機能します。

ADO.NET DataAdapter(シンADO.NETラッパーによってオンザフライで生成される)によって発行された挿入ステートメントは、ID値をDataRowに取得しようとします。

ただし、DataRowのid-Columnはまだ0です。トリガーを一時的に削除すると、正常に機能します。id-Columnは、データベースによって設定されたID値を保持します。

一方、NHibernateはこの種の挿入ステートメントを使用します。

これは機能し、NHibernatePOCOのidプロパティはフラッシュ直後に正しく設定されます。トリガーが別のスコープで実行されることを期待していたので、これは少し直感に反しているように見えます。したがって、@@identityはscope_identity()よりも適しているはずです。

したがって、問題はないと思いました。ADO.NETでも@@identityの代わりにscope_identity()を適用します。ただし、これによる影響はなく、DataRow値はそれに応じて更新されません。

そして今、最良の部分は、これら2つのステートメントをSqlServerプロファイラーからManagement Studioクエリ( "exec sp_executesql"を含む)にコピーして貼り付け、そこで実行すると、結果が逆になっているように見えることです。そこでは、ADO.NETバージョンは機能しますが、NHibernateバージョンは機能しません(select scope_identity()はnullを返します)。確認を数回試みましたが、役に立ちませんでした。まあ、実際にはそれは私が期待していたことでした-@@ identityはOKであり、scope_identity()は失敗します。

もちろん、Management Studioで呼び出すと、データベースからの結果セットが表示されるだけです。NHibernateとADO.NET内で発生することはすべて別のトピックです。また、T-SQL SETによって定義されたいくつかのセッションプロパティは、2つのシナリオ(Management Studioクエリと実行時のアプリケーション)で異なります。

これは私にとって本当のパズルです。それについての洞察があれば嬉しいです。ありがとうございました!

0 投票する
1 に答える
387 参照

c# - 列をdbのIDENTITYにマップします

ID列にをマークしましたが.Identity()、生成されたデータベーススキーマがtrueに設定されていないためIDENTITY、レコードを追加するときに問題が発生します。(SQL Management Studioで)データベーススキーマを手動で編集してId列にマークを付けるとIDENTITY、すべてが希望どおりに機能します。EFにそれを単独で実行させることはできません。

これは私の完全なマッピングです:

EFを使用して統合テスト用のデータベースを構築および再構築しているので、これを自動的に実行する必要があります...

編集: うーん...コメントで、これを実行するのに十分なコードを提供するように要求されたので、コードをコンソールアプリにカットアンドペーストして(すべてのクラスが必要になるわけではありません...)、突然それを実行しましたちょうど働いた。どこにあるのかわからなかったのですが、どこかでメソッド呼び出しを忘れていたのではないでしょうか。

他の誰かが探しに来た場合に備えて、この投稿への回答で実用的なソリューションコードを投稿します。

0 投票する
3 に答える
5667 参照

sql - SQL IDENTITY COLUMN

基本的にステートメントであるSQLテーブルがあります。

ここで、テーブルにあるレコードに日付とID列があり、自動番号が付けられ、トランザクションがクライアントにフロントエンドで表示される順序を定義するとします。

問題は、挿入中に一部のデータが欠落し、2つの日付間の一部のトランザクションが欠落していることです。

データをテーブルに挿入する必要がありますが、テーブルの最後ではなく、日付の間にデータを挿入する必要があります。通常の挿入を行うと、ID列が自動番号付けされ、更新できないため、データは指定した日付ではなく、テーブルの最後に表示されます。