[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2004
    Beiträge
    129

    skip foreign key?

    Hallo!

    Gibt es eine Möglichkeit in SQL beim Insert in Tabellen, die Foreign Key Constraints haben, die Sätze mit Constraintviolation einfach zu überspringen?
    Das sind Datensätze die keiner mehr braucht.
    Möchte das nicht händisch bei 50+ Dateien machen müssen.

    Lg Peter
    Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... where exists könnte dein Freund sein!
    D*B

    Zitat Zitat von dabeda Beitrag anzeigen
    Hallo!

    Gibt es eine Möglichkeit in SQL beim Insert in Tabellen, die Foreign Key Constraints haben, die Sätze mit Constraintviolation einfach zu überspringen?
    Das sind Datensätze die keiner mehr braucht.
    Möchte das nicht händisch bei 50+ Dateien machen müssen.

    Lg Peter
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Sep 2004
    Beiträge
    129
    Das Problem dabei ist, dass ich in meinem Daten-Übernahmeprogramm nicht auf where exists abfragen kann weil ich dort noch nicht weiß welche Constraints ziehen.
    Erzeuge mir aus den systables und syscolumns meine Insertstatements.
    Kann man beim "Anlegen" der Constraints vielleicht sowas wie "delete violated" sagen? Dann würd ich die Tabellen vor anlegen der Constraints füllen.

    Hintergrund:
    Es existiert eine Anwendung die aus 50+ physischen Files besteht, diese werden von DDS auf DDL geändert, Constraints angelegt und Datums- und Zeitfelder (8P 0/6P 0) auf echte Datums und Zeitfelder geändert.
    Die RPGs dahinter wurden schon auf FREE konvertiert und werden an die "neuen Umstände" angepasst.


    Mfg Peter
    Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.877
    Warum klemmst Du die Constraints (disabled) nicht vor dem Kopieren ab und aktivierst sie nach dem Füllen wieder.

    Über den iSeries Navigator kann man das mit ein paar Mouseclicks erledigen.

    Ungültige Constraints gehen nach dem aktivieren in einen Pending Status, der dann manuell berarbeitet werden kann.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... warum weiß man das nicht, die constraints sind auch im repository drin? Die Fremdschlüssel müssen doch bekannt sein und wenn man in der richtigen Reihenfolge arbeitet kann man mit where exists füllen.
    Wenn man für die foreign key Felder null zulässt (was sich empfiehlt), dann kann man die auch zunächst ungefüllt lassen und im Nachgang per update skript hochziehen.
    Constraints später anlegen? dann gehen die Dateien auf check pending und dann wirds fummelig, da ist es besser die Arbeit im Vorfeld in die Skripten reinzustecken. Programme helfen da auch wenig, da kann man zwar die violations übergehen, aber bei falscher Reihenfolge fehlen am Ende dann Sätze!

    D*B

    Zitat Zitat von dabeda Beitrag anzeigen
    Das Problem dabei ist, dass ich in meinem Daten-Übernahmeprogramm nicht auf where exists abfragen kann weil ich dort noch nicht weiß welche Constraints ziehen.
    Erzeuge mir aus den systables und syscolumns meine Insertstatements.
    Kann man beim "Anlegen" der Constraints vielleicht sowas wie "delete violated" sagen? Dann würd ich die Tabellen vor anlegen der Constraints füllen.

    Hintergrund:
    Es existiert eine Anwendung die aus 50+ physischen Files besteht, diese werden von DDS auf DDL geändert, Constraints angelegt und Datums- und Zeitfelder (8P 0/6P 0) auf echte Datums und Zeitfelder geändert.
    Die RPGs dahinter wurden schon auf FREE konvertiert und werden an die "neuen Umstände" angepasst.


    Mfg Peter
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Sep 2004
    Beiträge
    129
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Warum klemmst Du die Constraints (disabled) nicht vor dem Kopieren ab und aktivierst sie nach dem Füllen wieder.

    Über den iSeries Navigator kann man das mit ein paar Mouseclicks erledigen.

    Ungültige Constraints gehen nach dem aktivieren in einen Pending Status, der dann manuell berarbeitet werden kann.

    Birgitta
    Das wars!!

    Ach kann das Leben manchmal einfach sein ...
    Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!

  7. #7
    Registriert seit
    Sep 2004
    Beiträge
    129
    Zitat Zitat von BenderD Beitrag anzeigen
    ... warum weiß man das nicht, die constraints sind auch im repository drin? Die Fremdschlüssel müssen doch bekannt sein und wenn man in der richtigen Reihenfolge arbeitet kann man mit where exists füllen.
    Wenn man für die foreign key Felder null zulässt (was sich empfiehlt), dann kann man die auch zunächst ungefüllt lassen und im Nachgang per update skript hochziehen.
    Constraints später anlegen? dann gehen die Dateien auf check pending und dann wirds fummelig, da ist es besser die Arbeit im Vorfeld in die Skripten reinzustecken. Programme helfen da auch wenig, da kann man zwar die violations übergehen, aber bei falscher Reihenfolge fehlen am Ende dann Sätze!

    D*B
    Diesen Weg werde ich mir auch mal durchdenken, vielleicht brauch ich das ja noch öfter.
    Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... das Mäusekino brauchst du nicht, da gibt es auch den (einfacheren) chgpfcst - aber dann???
    ... musst du zu Fuss nachsehen, wo das klemmt, per händisch erstelltem SQL Sätze mit where not exists rausfeuern, wieder CHGPFCST zum aktivieren und dieser Zyklus kann dir bei der Auftragsdatei für Kunde, Lieferant, Artikel, Adresse, Lieferadresse mehrfach passieren (und auch noch iterativ - Kunde fliegt wegen Constraint raus, lässt sich aber nicht entfernen, weil er in Auftrag drinhängt...) das ist schnell angefangen und beschäftigt dich Tage...

    D*B

    Zitat Zitat von dabeda Beitrag anzeigen
    Das wars!!

    Ach kann das Leben manchmal einfach sein ...
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #9
    Registriert seit
    Sep 2004
    Beiträge
    129
    Zitat Zitat von BenderD Beitrag anzeigen
    ... das Mäusekino brauchst du nicht, da gibt es auch den (einfacheren) chgpfcst - aber dann???
    ... musst du zu Fuss nachsehen, wo das klemmt, per händisch erstelltem SQL Sätze mit where not exists rausfeuern, wieder CHGPFCST zum aktivieren und dieser Zyklus kann dir bei der Auftragsdatei für Kunde, Lieferant, Artikel, Adresse, Lieferadresse mehrfach passieren (und auch noch iterativ - Kunde fliegt wegen Constraint raus, lässt sich aber nicht entfernen, weil er in Auftrag drinhängt...) das ist schnell angefangen und beschäftigt dich Tage...

    D*B
    Und du hast recht, ist doch nicht so einfach wie es ausgesehen hat, vor allem sind vieeele auf pending.
    Werd mir eine Steuerdatei anlegen in der die Tabellen in richtiger Reihenfolge stehen und dort SQL-Statements hinterlegen.
    Schade ...
    Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!

Similar Threads

  1. File Exception Error - DB KEY
    By harkne in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 26-03-09, 09:16
  2. PRIMARY KEY erstellen mit ALTER TABLE
    By ZeusNBG in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 20-05-08, 12:26
  3. fehlende DDS Sourcen: disassembler?
    By emax in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 06-10-06, 11:01
  4. Client Access Express - Tastaturbelegung
    By uwer in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 24-03-05, 12:40
  5. Primary Key über Trigger erstellen
    By C_Dewald in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 12-08-03, 17:35

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •