verwendetes Datenbanksystem: Firebird2.1
Hey,
ich möchte Datensätze via BatchExecution einfügen. Leider bekomme ich einen Unique Key Violation Error wenn ich Einträge hinzufüge die bereits vorhanden sind. (Das Feld hat einen UNIQUE Index, das ist gewollt.)
Die neuen Datensätze werden nicht hinzugefügt weil die BatchExecution bei der UNIQUE KEY Exception abbricht. Weiss jemand ob ich bestimmte Fehlercodes ignorieren kann? In der Dokumentation habe ich leider nichts passendes gefunden.
FirebirdSql.Data.Isql.FbBatchExecution fbBatchExecution = new FirebirdSql.Data.Isql.FbBatchExecution(dbConnection);
foreach (string myItem in myItemList)
{
fbBatchExecution.SqlStatements.Add("insert into ...");
}
fbBatchExecution.Execute(true);
Cheers
aber ist es nicht der sinn eines unique-keys bzw. Indexes genau dies zu verhindern? dann ist doch der unique-key falsch gesetzt? ansonsten kannst du nur prüfen vorher ob der unique key anschlagen würde oder nicht z.b. mit einer SELECT anweisung die die Anzahl der betroffnenen Zeilen zurückgibt.
Oder man liest mal bei Firebird nach und findet da dann
http://www.firebirdsql.org/refdocs/langrefupd25-update-or-insert.html
Ich möchte die vorhandenen Daten nicht überschreiben. INSERT OR SKIP müsste es sein.. 😃 Hmm...
Na dann schau doch mal richtig in FZelles doku-link nach, da gibt's ein MERGE-Stmt. Vllt ist der dafür geeignet. Man könnte vllt erst alle in eine temporäre Tabelle schreiben, und dann die Sätze welche keine Duplikate sind, in der Zieltabelle anfügen.