2016-05-18 13 views
0

私は主キーを持つテーブルを持っています。私がInsertステートメントを実行しているとき、重複行を見つけて挿入を停止するエラーが発生します。私は重複行をスキップしてテーブルにデータを挿入したい。誰も私にこれを行う方法を提案してもらえますか?主キーを持つテーブルにデータを挿入する(重複行をスキップして)

おかげ

+0

ソースデータから異なる行のみを返すクエリから挿入します。ちっちゃく 'INSERT ...選択DISTINCT ... ' – Serg

+0

これを見て[質問](http://stackoverflow.com/questions/2513174/how-to-avoid-duplicates-in-insert-into-select-query- in-sql-server) – ZeusNet

答えて

0

MySQLデータベースで作業する場合、あなたの主キー列がAUTO_INCREMENTタイプでなければならず、MySQLが自動的にPKの新しい値を挿入します。 ORACLEで作業する場合は、SEQUENCEを別のメソッドとして使用する必要があります。このメソッドは増分され、PKに新しい値を与えます。

0

あなたが使用しているエンジンにタグを付けていないので、これがうまくいくかどうかわかりません。

文は、INSERT/UPDATE/DELETEを1つの作業単位にまとめます。

+0

私はSQL Server 2008を使用しています – vinisha9

0

テーブルプライマリキーの列はAUTO_INCREMENTである必要があります。その値を自分で挿入する必要はなく、自動的に必要になります。

また、あなたにとってベストプラクティスになります。ユニークな値を挿入するたびに、データベースが自動的に処理されます。

+0

主キー列は、挿入するトランザクションID列です。この列を主キーにして、重複したトランザクションIDがテーブルに挿入されないようにします。だから私は本当にこの列のAUTO_INCREMENTを持つことはできません。これを行うための他の方法を教えてください。 – vinisha9

+0

あなたのテーブルに挿入された最後の最大番号を見つけ、それを1つ増やしてからテーブルにデータを追加/挿入します。ただし、データベースには2つの呼び出しがあります。 1]最大番号を取得するには 2]データベースにデータを挿入するには(IDは最大番号+ 1になります) –

関連する問題