2016-05-18 8 views
0

Ich habe eine Tabelle mit Primärschlüssel. Wenn ich eine Insert-Anweisung ausführe, gibt es einen Fehler, wo es eine doppelte Zeile findet und die Einfügung stoppt. Ich möchte die Daten in die Tabelle einfügen, indem ich die doppelte Zeile überspringe. Kann mir bitte jemand vorschlagen, wie man das macht.Einfügen von Daten in eine Tabelle mit Primärschlüssel (durch Überspringen der doppelten Zeile)

Dank

+0

Einfügen von Abfrage, die nur bestimmte Zeilen aus den Quelldaten zurückgibt. Kinda 'INSERT ... SELECT DISTINCT ...' – Serg

+0

Schauen Sie sich diese [Frage] (http://stackoverflow.com/questions/2513174/how-to-avoid-duplicates-in-insert-into-select-query- in-sql-server) – ZeusNet

Antwort

0

Wenn Sie mit MySQL-Datenbank dann Ihren primären Schlüsselspalt arbeiten von AUTO_INCREMENT Typ sein und MySQL automatisch neuen Wert für PK ein. Wenn Sie mit ORACLE arbeiten, müssen Sie SEQUENCE als eine andere Methode verwenden, die erhöht und Ihnen einen neuen Wert für PK gibt.

0

Sie haben nicht markiert, welche Engine Sie verwenden, also weiß ich nicht, ob dies für Sie funktioniert.

Die Anweisung MERGE kombiniert INSERT/UPDATE/DELETE zu einer einzigen Arbeitseinheit.

+0

Ich verwende sql server 2008 – vinisha9

0

Ihre Tabellenprimärschlüsselspalte muss von AUTO_INCREMENT sein, damit Sie diesen Wert nicht selbst eingeben müssen, er wird automatisch übernommen.

Und es wird auch die beste Praxis für Sie sein. Denn jedes Mal, wenn Sie den eindeutigen Wert eingeben müssen, kümmert sich die Datenbank in Ihrem Namen darum.

+0

Die Primärschlüsselspalte ist eine Transaktions-ID-Spalte, in die wir einfügen werden. Wir möchten, dass diese Spalte der Primärschlüssel ist, damit keine Duplikat-Transaktions-IDs in die Tabelle eingefügt werden. Daher kann ich für diese Spalte kein AUTO_INCREMENT haben. Bitte schlagen Sie mir eine andere Möglichkeit vor, dies zu tun. – vinisha9

+0

Suchen Sie die letzte größte in Ihre Tabelle eingefügte Zahl, erhöhen Sie sie um 1 und fügen Sie dann Daten in eine Tabelle ein, aber hier haben Sie zwei Aufrufe in einer Datenbank. 1] Um die größte Zahl zu bekommen 2] Um Daten durch in einer Datenbank einzufügen (ID wird größte Nummer + 1 sein) –