Office: (Office 2003) Anfügeabfrage Schlüsselverletzung

Helfe beim Thema Anfügeabfrage Schlüsselverletzung in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe ein Problem mit einer Anfügeabfrage. Access gibt mir immer die Fehlermeldung "1 Schlüsselverletzung" und kann deswegen nichts anfügen.... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von quaresma1801, 7. Januar 2012.

  1. Anfügeabfrage Schlüsselverletzung


    Hallo,

    ich habe ein Problem mit einer Anfügeabfrage. Access gibt mir immer die Fehlermeldung "1 Schlüsselverletzung" und kann deswegen nichts anfügen.

    Tabellen:
    tbl_Mitarbeiter
    tbl_MitarbeiterAuto
    tbl_Auto
    Ich weiß das das Feld "AutoWert" bei der INSERT INTO - Anweisung nicht berücksichtigt werden muss. Hier mein SQL Code
    Code:
    kann mir jemand sagen warum die Schlüsselverletzung entsteht und wie ich es beheben kann?

    mfg

    :)
     
    quaresma1801, 7. Januar 2012
    #1
  2. Hi,

    du hast in der Tabelle ein zusammengesetzten Primärschlüssel oder einen eindeutigen Index. Heißt: die Tabelle lässt nicht zu, dass es doppelte Mitarbeiter-Auto-Sätze gibt. Dein fraglicher Satz aber scheint ein solches Duplikat zu erzeugen. Das wird dann abgelehnt. Zu Recht.

    Deine SQL ist syntaktisch völlig ok. Diesen Satz würdest du auch manuell nicht anfügen können.
     
    Atrus2711, 9. Januar 2012
    #2
  3. Heisst Klartext das ich in der Tabelle "tbl_MitarbeiterAuto" die "MitarbeiterAuto_id" entfernen müsste?
     
    quaresma1801, 9. Januar 2012
    #3
  4. FW
    FW

    Anfügeabfrage Schlüsselverletzung

    ... das ist das 2-te Problem: einen Autowert kannst'e nicht hinzufügen, der wird ja vom System veregeben...
     
  5. Hi,

    wenn es Duplikate geben darf, dann dürfen die duplikatausmachenden Felder halt nicht gemeinsam Primärschlüssel oder eindeutig indiziert sein.

    Ein Autowert ist immer gut: er kostet wenig Platz, macht keinen Wartungsaufwand und ist immer ein Kandidat für den Primärschlüsseljob.
     
    Atrus2711, 9. Januar 2012
    #5
  6. Hi,

    schau dir die Indizes in der Tabelle an. Kann ein Mitarbeiter mehrere Autos haben? Dann darfst du dem Datenfeld keinen eindeutigen Index geben, der eindeutige Index sollte über beide Datenfelder gehen!
     
    Anne Berg, 9. Januar 2012
    #6
  7. In der gezeigten Form ganz sicher nicht. Für die Datenquelle bedarf es zusätzlich VALUES oder SELECT.
    Das wird ja auch nicht getan. Hier werden sichtbar Fremdschlüssel in eine Verknüpfungstabelle einer m:n-Beziehung eingetragen. Also müsste darauf geachtet werden,

    a) dass die Schlüssel vorher als Primärschlüssel in den Mastertabellen vorhanden sind (Datenherkunft im Formular unklar) und
    b) und dass über beide Fremdschlüssel nur ein zusammengesetzter eindeutiger Index angelegt ist.
    Einzelne Indizes auf diese beiden Fremdschlüsselfelder benötigst Du nicht, da für ein Fremdschlüsselfeld in einer 1:n-Beziehung mit referentieller Integrität automatisch ein (nicht ohne weiteres sichtbarer) Index angelegt wird.
    Ein eigener Einzel-Index auf ein Fremdschlüsselfeld ist da eher schädlich, da er zusätzlich ausgewertet werden muss (Mehrarbeit) und ggf. die Möglichkeit, eigene gewünschte Indizes anzulegen (max. 32 pro Tabelle möglich), stört.
     
  8. FW
    FW

    Anfügeabfrage Schlüsselverletzung

    ...
    hast'e Recht, das alte Problem: Wer lesen kann...
     
  9. Ich war auch unsicher. Aber ich habe es in Access 2007 geprüft. Es geht!

    Mit dem aus den Fremdschlüsseln zusammengesetzten eindeutigen Index werden Duplikate in der Tabelle verhindert. Das ist aber nur sinnvoll, wenn es auch tatsächlich keine Duplikate dort geben darf. Wenn Duplikate zulässig sein sollen, darf ein solcher Index nicht eingerichtet werden. Für die Nutzung als Zwischentabelle einer m:n-Beziehung ist er jedenfalls nicht zwingend nötig.
     
    Atrus2711, 9. Januar 2012
    #9
  10. Hey danke schon einmal für die Antworten!

    1.Also es darf keine Duplikate geben. Jetzt meine Frage. Wie bekomme ich mit Access einen zusammengesetzten Fremdschlüssel hin :-\?

    2. Die Daten der Formularfelder kommen direkt aus der Tabelle.
    Ergo:
    Textfeld[=[tbl_Mitarbeiter].Mitarbeiter_id

    Gruß
     
    quaresma1801, 9. Januar 2012
    #10
  11. Im Tabellenentwurf Ansicht/Indizes, dort ist ein 3spaltiges Fensterchen zu sehen.

    Die erste Spalte nennt den Indexnamen. Zu dem Index gehören die Felder (mittlere Spalte) in dieser und den folgenden Zeilen, bis wieder ein neuer Index beginnt (1. Spalte).

    Wenn der Cursor in einer Zeile steht, wo der Index beginnt, siehst du im unteren Teil einige Eigenschaften des Index. Da kannst du auch einstellen, ob der Index eindeutig sein soll.

    Ein zusammengesetzter Primärschlüssel wirkt übrigens ganz genauso wie ein eindeutiger Index, aber er erzwingt zusätzlich zur Eindeutigkeit auch noch die physische Reihenfolge der Datensätze auf der Platte.

    Wenn die Tabelle also Eindeutigkeit in diesen beiden Felder erzwingt, ist ihr völlig wurscht, woher die Daten kommen (Hand, Datei, VBA, ...): was die Eindeutigkeit verletzt, wird verweigert, Ende. Dein fraglicher Satz ist also ein Duplikat und wird daher abgelehnt.
     
    Atrus2711, 9. Januar 2012
    #11
  12. Sorry wenn ich das grade nicht verstehe. Ich weiss das es nervig ist, ich rege mich grade selber über mich auf. Irgendwie hats bei mir noch nicht klick gemacht...

    Also:
    Code:
    So sind jetzt meine Einstellungen. Wie gesagt ich weiß das ich das Feld noch einmal von neu aufräume *frown.gif* Ich möchte mich jetzt auch nicht dumm anstellen...
     
    quaresma1801, 9. Januar 2012
    #12
  13. Anfügeabfrage Schlüsselverletzung

    Hi,

    die Feldeigenschaft "Indiziert", die du hier zitierst, hilft dir da nicht weiter, weil sie nur die Indizes zeigt, die das Feld selbst hat. Es gibt aber auch Indizes, die mehrere Felder umfassen. Die bleiben da unberücksichtigt. Die siehst du nur im erwähnten Fenster Ansicht/Indizes. Machs mal auf, beweg den Cursor durch die Zeilen und schau genau hin.

    M.E. ist die Feldeigenschaft Indiziert völlig entbehrlich, da sie über den Indexfenster komplett dargestellt werden kann. Wie wir sehen, kann es sogar irritieren, dass dort bei beiden "Duplikate zulässig" steht, beide gemeinsam aber eben doch keine Duplikate zulassen.
     
    Atrus2711, 9. Januar 2012
    #13
  14. So sind meine Einstellungen. Von meiner Logik her ist das richtig, funktioniert aber leider nicht

    Access sagt mir das Felder mehrfache Werte enthalten könnte.
     
    quaresma1801, 9. Januar 2012
    #14
  15. Acc2000 weigert sich (Gott sei Dank).

    Bei Syntaxgeschichten würde ich auf extreme Einsparungen verzichten und mich eher an die vollständige und korrekte Syntax halten, weil gerade hier bei der Fehlertoleranz eine hohe Abhängigkeit vom Softwarehersteller besteht.
    Manchmal staunt man ja, was alles so akzeptiert und interpretiert wird. Das "Wissen" darüber steht aber auf wackligen Füßen, undokumentierte Funktionalitäten sind mit Vorsicht zu genießen.

    Jeder Wechsel der Version oder ein neues Servicepack oder ein Hotfix bergen die Gefahr, dass die gewohnte Fehlertoleranz bei Anweisungen reduziert wird und damit "überraschend" Fehler auftreten, wo bisher immer alles bestens funktioniert hat.
    Die Gefahrenquote und auch der Aufräumaufwand ist dabei ungleich größer als bei der Verwendung von Bezeichnungen, vergleiche Acc2010 - Wann muss man eckige Klammern für ….
     
Thema:

Anfügeabfrage Schlüsselverletzung

Die Seite wird geladen...
  1. Anfügeabfrage Schlüsselverletzung - Similar Threads - Anfügeabfrage Schlüsselverletzung

  2. Anfügeabfrage Anzahl Datensätze bestimmte Zahl

    in Microsoft Access Hilfe
    Anfügeabfrage Anzahl Datensätze bestimmte Zahl: Hallo an Alle, ich hoffe, ich schaffe es deutlich zu schildern, wo mein Problem liegt. In einem Formular habe ich ein Textfeld (txt_AnzINTMA2), in dem eine Zahl berechnet wird. Ich möchte nun...
  3. Anfügeabfrage- schon vorhandene Datensätze überspringen

    in Microsoft Access Hilfe
    Anfügeabfrage- schon vorhandene Datensätze überspringen: Guten Tag, ich habe eine Anfügeabfrage erstellt, welche die Daten von einer Excel Verknüpfung in Access in eine identische Tabelle der DB importiert. Die Anfügeabfrage soll nun die Datensätze aus...
  4. Anfügeabfrage Gültigkeitsverletzungen

    in Microsoft Access Hilfe
    Anfügeabfrage Gültigkeitsverletzungen: Hallo zusammen, ich habe eine Anfügeabfrage, die etwa 1000 Datensätze mit 30 Feldern anfügen soll, und erhalte anschließend die Meldung, dass X Datensätze nicht angefügt werden können wegen einer...
  5. Anfügeabfrage läuft ins Leere.

    in Microsoft Access Hilfe
    Anfügeabfrage läuft ins Leere.: Moin, folgendes Problem: Ich habe eine Anfüge abfrage die Daten aus 3 Tabellen zusammen bringt. Nun habe ich ein Berechnetes Feld in einer anderen Abfrage gebaut und möchte diesen wert auch über...
  6. Anfügeabfrage = Schlüsselverletzung

    in Microsoft Access Hilfe
    Anfügeabfrage = Schlüsselverletzung: Guten Abend, ich bearbeite derweil kleinere Aufgaben um den Umgang mit Access 2010 zu lernen (für den ECDL Advanced). Dabei bin ich auf eine simpel wirkende Aufgabe gestoßen, die ich gerne ohne...
  7. Häufige Fehler beim Ausführen einer Anfügeabfrage

    in Microsoft Access Tutorials
    Häufige Fehler beim Ausführen einer Anfügeabfrage: Häufige Fehler beim Ausführen einer Anfügeabfrage Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Mehr......
  8. Hinzufügen von Datensätzen zu einer Tabelle mit einer Anfügeabfrage

    in Microsoft Access Tutorials
    Hinzufügen von Datensätzen zu einer Tabelle mit einer Anfügeabfrage: Hinzufügen von Datensätzen zu einer Tabelle mit einer Anfügeabfrage Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010 Access...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden