![]() |
Datenbank: MS SQL Server • Version: 2008 • Zugriff über: ADO oder UniDAC
INSERT in zwei Tabellen und UNIQUE-Index???
Es gibt als Beispiel zwei Tabellen: "Artikel" und "Anbieter". Tabelle "Artikel" ist mit der Tabelle "Anbieter" durch einen Foreign Key verknüpft. Mehrere Felder in der Tabelle "Anbieter" sind mit einem UNIQUE-Index verbunden, um doppelte einträge zu verhindern.
Wie ist jetzt der richtige Weg, den Tabellen einen neuen Datensatz hinzu zu fügen? |
AW: INSERT in zwei Tabellen und UNIQUE-Index???
Na zuerst die Anbietertabelle mit allen benötigten Constraints und dann den Artikel mit Referenz auf den Anbieter.
|
AW: INSERT in zwei Tabellen und UNIQUE-Index???
Vielen Dank für die schnelle Reaktion!
Zitat:
|
AW: INSERT in zwei Tabellen und UNIQUE-Index???
Das ist ja eben elegant. Ein Post ist nicht möglich wenn etwas nicht stimmt, und es ist zentral in der Datenbank zentral hinterlegt. Du musst nur die Exception ggf. abfangen und dem User vermitteln.
|
AW: INSERT in zwei Tabellen und UNIQUE-Index???
Zitat:
Edit: Natürlich muss man nicht zwingend vor jedem INSERT diese SELECT-Abfrage ausführen. Es würde reichen, wenn man die Exception abfängt und erst dann die Referenz auf den Anbieter holt. Aber im meinem bekomme ich die Daten immer von denselber Anbietern, so dass es nach gewisser Zeit praktisch jeder INSERT ein UNIQUE-Konflikt auslösen würde. |
AW: INSERT in zwei Tabellen und UNIQUE-Index???
Ja wie sieht denn das CONSTRAINT Konstrukt aus - ist das wirklich so fies? Was sind die Feldtypen die geprüft werden? Und wie immer bei MSSQL kann man durch Schrauben mit Statistiken und Indexen sicher was erreichen. Übrigens hängt es auch davon ab bei welchem Feld es fehlschlägt, denn es kann ja ggf. mehrere Duplikate diesbezüglich geben.
Ansonsten steht der Key in der Exception: CREATE UNIQUE INDEX terminated because a duplicate key was found. Most significant primary key is '%S_KEY'. oder Cannot insert duplicate key row in object '%.*ls' with unique index '%.*ls'. |
AW: INSERT in zwei Tabellen und UNIQUE-Index???
Die Feldtypen sind fast alle vom Typ NVARCHAR. Ich musste dieses Typ nehmen, weil es sich bei vielen Anbieter um ausländische, meistens osteuropäische, Firmen handelt und die viele Firmennamen und personenbezogene Daten ganz oder Teilweise in Unicode bedürfen.
|
AW: INSERT in zwei Tabellen und UNIQUE-Index???
Zitat:
|
AW: INSERT in zwei Tabellen und UNIQUE-Index???
Nein, das sind die Meldungen vom SQL-Server. Die müssen ja irgendwie ankommen. Aber irgendwie scheint mir das Konstrukt der Plausibilisierung nicht überzeugend zu sein. Kannst Du nicht mit Anbieter-IDs arbeiten von vornherein? Und dann nur bei Neuanlage, Änderung die kompletten Daten in einer separaten EDI?
|
AW: INSERT in zwei Tabellen und UNIQUE-Index???
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz