ilch Forum » Allgemein » HTML, PHP, SQL,... » ID wiederherstellen

Geschlossen
  1. #1
    User Pic
    Nex4T ilch.de Design
    Registriert seit
    28.02.2007
    Beiträge
    2.912
    Beitragswertungen
    141 Beitragspunkte
    Mir ist gerade etwas aufgefallen, und würde gern wissen wie ich das beheben kann,
    unzwar ich hab 2 tabellen, eine mit allen daten zum kunden, die andere dient nur dazu eine rechnungsnr weiterlaufen zulassen über die id jetzt habe ich das Problem wenn ich ein eintrag lösche, verschwindet somit auch z.b id 9 was schlecht für das finanzamt ist weil rechnungsnr fehlen.
    while(!asleep()) sheep++;
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Rock@wulf Entwickler
    Registriert seit
    03.06.2004
    Beiträge
    3.277
    Beitragswertungen
    237 Beitragspunkte
    syr aber wo löscht du was und wo verschwindet was
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    holz Hall Of Fame
    Registriert seit
    17.11.2005
    Beiträge
    4.607
    Beitragswertungen
    116 Beitragspunkte
    ja du hast nen ForeignKey? von a nach b und löscht b und dann löscht es dir a mit wenn du b löscht? oder umgekehrt?

    dann musst du dich mit der referenziellen Integrität beschäftigen

    www.peterkropff.de/site/mysql/referenzaktion.htm

    wie sieht denn das Schema der Datenbank aus? und Was für Constraints hast du gesetzt?
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Nex4T ilch.de Design
    Registriert seit
    28.02.2007
    Beiträge
    2.912
    Beitragswertungen
    141 Beitragspunkte
    Also ich hab Tabelle a mit allen Daten zum Kunden Tabelle b ist nur für die fortlaufende Rechnungsnr und die kundenid die ich ort eintragen lasse, ein Eintrag findet auch nur statt wenn ich eine rechnung erstellt habe, wenn ich nun meine Rechnung lösche, löscht er in Tabelle b den Eintrag über eine Where klausel mit der kunden id. soweit so gut allerdings wenn ich egal für welchen kunden eine neue rechnung erstelle erscheint die Rechnungsnummer ein weiter sprich alter kunden den ich gelöscht habe hatte rid 2 neuer Kunde hat rid 3 aber ich darf die 2 nicht verlieren.

    Da dieses kleine Projekt trotzdessen Private inhalte betrifft schicke ich ein link dazu nur innerhalb des teams raus.


    Zuletzt modifiziert von Nex4T am 05.02.2016 - 20:18:08
    while(!asleep()) sheep++;
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    holz Hall Of Fame
    Registriert seit
    17.11.2005
    Beiträge
    4.607
    Beitragswertungen
    116 Beitragspunkte
    das schema reicht um zu sehen wie die datenbank aussieht.

    du musst meine fragen schon beantworten zunge
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Nex4T ilch.de Design
    Registriert seit
    28.02.2007
    Beiträge
    2.912
    Beitragswertungen
    141 Beitragspunkte
    also in tabelle a löscht er nicht ist auch richtig so es geht sich nur um tabelle b, also ich verstehe nicht ganz was du meinst, in Tabelle b ist es so rid INT 20 AI, kid VARCHAR 200
    while(!asleep()) sheep++;
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Rock@wulf Entwickler
    Registriert seit
    03.06.2004
    Beiträge
    3.277
    Beitragswertungen
    237 Beitragspunkte
    Okay ich versteh das Prinzip aber immer noch nicht was daran falsch ist

    Machen wir fiktiv mal einfach was auf.

    du hast Tabelle A Kundendaten

    kid, name ----
    1, Muster
    2, Hausen
    3, Festplatz

    du hast Tabelle B Rechnungen

    rid, kid
    1, 2
    2, 1
    3, 3
    4, 1


    nun löscht du eine Nummer und dann ist was nicht richtig daran?

    Wenn ich richtig liege autoincementest du die rid?

    Und in dem Fall war Rechnung 4 falsch oder was auch immer du löscht sie und es geht mit 5 Weiter?

    Falls das so sein sollte dann würde ich auf das löschen verzichten und die Falsche Rechnungsnummer dem Kunde 0 Zuweisen und Bemerkung anhägen das sie gelöscht ist lächeln

    Ansonsten musst du den Autoinc wert der tabelle zurücksetzen
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Nex4T ilch.de Design
    Registriert seit
    28.02.2007
    Beiträge
    2.912
    Beitragswertungen
    141 Beitragspunkte
    ZitatZitat geschrieben von Rockwulf

    Und in dem Fall war Rechnung 4 falsch oder was auch immer du löscht sie und es geht mit 5 Weiter?

    Falls das so sein sollte dann würde ich auf das löschen verzichten und die Falsche Rechnungsnummer dem Kunde 0 Zuweisen und Bemerkung anhägen das sie gelöscht ist lächeln

    Ansonsten musst du den Autoinc wert der tabelle zurücksetzen


    Damit liegst du richtig, das war meine frage wie ich es zurück setzen kann ohne das andere daten verloren gehen
    while(!asleep()) sheep++;
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Rock@wulf Entwickler
    Registriert seit
    03.06.2004
    Beiträge
    3.277
    Beitragswertungen
    237 Beitragspunkte
    ALTER TABLE tablename AUTO_INCREMENT = X


    Funzt aber nur wenn du jeweils den letzen Eintrag löscht

    Wenn es mitten drin eine ist dann hast du ne Lücke bis du sie wieder füllst.


    Zuletzt modifiziert von Rock@wulf am 05.02.2016 - 22:06:28
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Ahrtas Hall Of Fame
    Registriert seit
    17.12.2007
    Beiträge
    2.303
    Beitragswertungen
    202 Beitragspunkte
    Wieso löschst du überhaupt Kundendaten?

    Soweit ich weiß hast du das Recht zumindest die bei der Rechnung angegebenen Kundendaten zu speichern - schließlich musst du ja auch Rechnungen für mehrere Jahre archivieren damit du jederzeit zugreifen kannst wenn du eine Rechnung später mal nachreichen/vorzeigen musst.

    Nur so nebenbei.^^
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Nex4T ilch.de Design
    Registriert seit
    28.02.2007
    Beiträge
    2.912
    Beitragswertungen
    141 Beitragspunkte
    Das ist mir bewusst aber wenn ein Kunde sich doch noch entscheiden solte abzusagen, wozu brauch ich dann eine Rechnung?
    while(!asleep()) sheep++;
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    holz Hall Of Fame
    Registriert seit
    17.11.2005
    Beiträge
    4.607
    Beitragswertungen
    116 Beitragspunkte
    Mach mal einen Export der Datenbank und zeig mir mal wie du die tabellen anlegst. (~Schema -- Datenbanksturktur = Schema)

    anhand des SChemas kann man feststellen welche Constraints du angelegt hast -> ForeignKeys wäre zum beispiel ein constriant oder das oben erwähnte OnDeleteCascade. Welches du so konfigurieren kannst das eben nicht das gelöscht wird was da bleiben soll. Dazu habe ich ja den Link gepostet wo es erklärt wird zwinker
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten