問題タブ [identity-insert]

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 に答える
303 参照

sql-server - ID は、既存のテーブルに切り捨てずにいくつかのレコードを挿入します

BサーバーからAサーバーにあるテーブルからデータを挿入したいと思います。

元:

-- PRIMARY KEY 制約違反。オブジェクト 'A.table' に重複キーを挿入できません。

私はすでに試しました

SQL Server 2005 を使用しています。

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

sql-server - EF4はスクリプトを介してデータを挿入します

デフォルトでは、EFコードは最初にStoreGeneratedPattern=Identitを設定することを知っています。大丈夫です。しかし、SQLスクリプトを介してデータの一部を挿入したいと思います。時間内に1つのテーブルだけが可能であることを私は知っていますSET IDENTITY_INSERT Rules ON;

しかし、私が走ろうとすると

エラーが発生します。そして、特定のロジック制約を設定するために特定のIDを設定したいと思います。

どうすれば問題を解決できますか?

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

sql - 挿入された ID を使用した SQL Server トリガー

データベースへのテーブルの挿入に対するトリガーを作成したいと考えています。たとえば、company_nameテーブルがある場合は、次のようにします。

  1. company_nameサーバー A のテーブルに新しい行を挿入する
  2. company_nameサーバー Aに新しく挿入された行の ID を取得するトリガーを呼び出します。
  3. Set identity_insert ONcompany_nameサーバーBのテーブル上
  4. サーバー A に挿入されたのとまったく同じ行を、company_nameサーバー B のテーブルに挿入します。

リンクされたサーバーは として参照できます[ServerB].[ServerB-Database].dbo.company_name

これは、さまざまな国のクライアントのデータ ホスティング制限による要件です。

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

sql - IDENTITY_INSERT が OFF に設定されている場合、テーブルの ID 列に明示的な値を挿入できません

ID 列を持つテーブルにレコードを挿入しようとしています。さまざまな理由から、これは単純な挿入ではなく、外部テーブルと同じ ID を持つ必要があります。だから私は実行します:

そして、私はエラーが発生します:

何か案は?IDENTITY_INSERT を OFF にすべきではないと文句を言いますが、ON に設定しています。

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

sql - SQL Server クエリ、ストアド プロシージャ複数テーブルの Identity_Insert アーカイブ レコードを作成

エラーが発生したため、これはストアド プロシージャ クエリで可能ですか?

メッセージ 208、レベル 16、状態 1、プロシージャ SFC_spTransferDRtoDeleteArchives、行 85
無効なオブジェクト名 'dbo.Sales.DeletedDeliveryHeaderHistory'。

1 つのストアド プロシージャで複数のテーブルに複数のデータを転送するためのストアド プロシージャを作成するためのソリューションを見つけようとしていますが、それが可能かどうか知りたいですか? または、これに対する解決策があるかどうか..

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

sql - SQL Server 2008 R2 - 一時テーブルに ID 列があると認識されるのはなぜですか?

部門 ID を使用して返されるレコードの数を制限できるストアド プロシージャを作成しようとしています。一時テーブルに参加してレコードを制限しようとしています。

以下のコードを実行すると、エラーが発生します。

テーブル '#department' の ID 列の明示的な値は、列リストが使用され、IDENTITY_INSERT が ON の場合にのみ指定できます。

コードは次のとおりです。

私はから始めました:

しかし、私はエラーが発生します:

データベースには「#department」という名前のオブジェクトがすでに存在します

私はSQLの専門家ではないので、これを行うためのより良い方法があるでしょうか?

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

asp.net-mvc - IDENTITY_INSERT が OFF に設定されている場合、テーブル 'UTILISATEUR' の ID 列に明示的な値を挿入できません

Visual Studio 2013 と Sql Server 2012 を使用しています。これを使用 して、プロジェクトのビューを生成します。私は2つのテーブルを持っています:

  1. UTILISATEUR (ID_UTILISATEUR,CIN,NOM,PRENOM...,ID_ROLE):
    ID_UTILISATEURは主キーで、ID_ROLEは外部キーです。
  2. ROLE (ID_ROLE、NOM_ROLE、DESCRIPTION_ROLE): ID_ROLEは主キーです。

コード生成プロセスが完了すると、次のようになります。

  • Controllers/UtilisateurController.cs 。
  • 新しいフォルダー (Views/Utilisateur) : Create.cshtml、 Delete.cshtml 、 Details.cshtml 、 Edit.cshtml 、および Index.cshtml 。

私の問題は、Create.cshtml ページにアクセスし、フィールドを再入力して [作成] をクリックすると、次のエラーが表示されることです。Cannot insert explicit value for identity column in table 'UTILISATEUR' when IDENTITY_INSERT is set to OFF.

ONに設定されているため、ID列に値を挿入できないと説明しています。それを解決するために、次のコードで何を変更すればよいかわかりません。


UtilisateurController.cs の私の Create メソッド:

エラー行は次のとおりです。db.SaveChanges();


私の Views/Utilisateur/Create.cshtml ページは次のとおりです。

助けてください !

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

asp.net-mvc - エンティティ挿入データ。「プロパティ 'ID' はオブジェクトのキー情報の一部であり、変更できません」エラー

current は myclass の新しいインスタンスで、 context.classRepo.bringcontentwithid(userid) はそのインスタンスを返します。この値を現在の新しいオブジェクトに割り当ててから、データテーブルの新しい行として挿入しようとしましたが、「プロパティ 'ID' はオブジェクトのキー情報の一部であり、変更できません」のようなエラーが表示されます。

私が理解していなかった点は、インスタンスを変更して新しいデータとして挿入するだけで、何かを変更したくないということです。

どうすればこれを修正できますか?

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

sql-server - 空の DbMigrations を生成せずに、実行時に DatabaseGeneratedOption.Identity、Computed、None を切り替える方法

私は、レガシー データベースを、主に Entity Framework Code-First を通じてアクセスして "管理" する必要がある新しいデータベースに移行しています (矛盾しているように聞こえるかもしれません)。

MS SQL Server 2014 を使用しています。

  1. 従来のデータベースには、計算列を含むいくつかのテーブルが含まれていました。典型的な GUID と DateTime のもの。

  2. 技術的に言えば、これらの列には計算列の仕様がありませんでしたが、デフォルト値NEWID()GETDATE()

DbContext次のように、これらのプロパティを処理するように構成するのは非常に簡単です。

上記は、エンティティ フレームワークに対して、 および の間にそのようなプロパティに指定された値を送信することを無視するように指示しINSERTsますUPDATEs

  1. しかし今、レガシー レコードのインポートを許可し、 PRIMARY KEYを含むOLD 値を維持する必要があります。IDENTITY

    1. これは、これらのレコードを挿入する際IdGuidおよびDTSプロパティをに設定する必要があることを意味します。DatabaseGeneratedOption.None

    2. の場合、Id何らかの方法SET IDENTITY_INSERT ... ON/OFFで接続セッション内で実行する必要があります。

    3. そして、このインポート プロセスも Code-First を介して実行したいと考えています。

  2. モデルを「一時的に」変更してDatabaseGeneratedOption.None、データベースの作成後にこれらのプロパティを設定すると、典型的な結果が得られます。

    データベースが作成されてから、コンテキストをサポートするモデルが変更されました。Code First Migrations を使用してデータベースを更新することを検討してください

  3. この最新バージョンのコンテキストを「確立」するために、空のコード化された移行を生成できることは理解して-IgnoreChangesいますが、これは、単に空の移行を前後に実行する必要があるため、受け入れられる戦略ではありません。この目的。


半分の答え:

これらのプロパティに null 許容型を与えることを検討しました。

initial のデフォルト値に注意しながらDbMigration:


質問:

しかし、疑問が残ります。実行時DatabaseGeneratedOption.IdentityDatabaseGeneratedOption.Computedとを切り替える方法はありますか?DatabaseGeneratedOption.None

少なくとも、DatabaseGeneratedOption.Identity実行時にオン/オフを切り替えるにはどうすればよいでしょうか?