[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Mar 2006
    Beiträge
    27

    SQL RENAME TABLE und Tabellen-Name < 10 Zeichen

    Moin zusammen,

    jetzt habe ich mir soviel Mühe gemacht und beim Abschicken des Textes geht's in die Grütze - also noch Mal
    Hoffentlich reicht auch die Kurzform.

    Für lange SQL-Namen funktioniert der RENAME TABLE:
    CREATE TABLE "ChurchMembershipType" (...
    RENAME TABLE "ChurchMembershipType" TO SYSTEM NAME "CHURCHMTYP";
    Ergibt:
    TABLE_NAME: ChurchMembershipType
    SYSTEM_TABLE_NAME: CHURCHMTYP

    Bei kurzen SQL-Namen arbeitet der RENAME nicht wie erwartet:

    CREATE TABLE "Passport" (...
    Ergibt:
    TABLE_NAME: Passport
    SYSTEM_TABLE_NAME: "Passport"

    RENAME TABLE "Passport" TO SYSTEM NAME "PASSPORT";
    Ergibt:
    TABLE_NAME: PASSPORT
    SYSTEM_TABLE_NAME: PASSPORT

    Bei meiner Suche bin ich nicht erfolgreich gewesen und hoffe dass ihr eine Lösung/Workaround habt.

    Ziel ist die SQL-Namen case-sensitiv und die System-Namen upper-case darzustellen, d.h.
    TABLE_NAME: Passport
    SYSTEM_TABLE_NAME: PASSPORT

    Vielen Dank im Voraus und einen schönen Abend

    Gruß
    Wolfgang

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nun der Befehl lautet ja auch:
    Rename OldName to NewName for system name SYSNAME
    Soll der Name casesensitive werden, muss der Befehl eben
    Rename "OldName" to "NewName" for system name SYSNAME
    lauten.
    Allerdings bringt dir das ja bei 10-stelligen Namen eher wenig, da ja der Systemname und Tablename alternativ verwendet werden kann.
    Was für einen Sinn macht es,
    select * from "Passport"
    von
    select * from passport
    oder
    SELECT * FROM PASSPORT
    zu unterscheiden?
    Ich denke mal die DB übernimmt den 10-stelligen Systemnamen als Tabellen-Namen, wenn er den Richtlinien für Objektnamen entspricht.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Die AS/400 tut's teilweise, denn "Passport" bezieht sich nicht (immer) auf dasselbe Objekt wie passport oder Passport oder PASSPORT.

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Was für einen Sinn macht es,
    select * from "Passport"
    von
    select * from passport
    oder
    SELECT * FROM PASSPORT
    zu unterscheiden?

  4. #4
    Registriert seit
    Mar 2006
    Beiträge
    27
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Nun der Befehl lautet ja auch:
    Rename OldName to NewName for system name SYSNAME
    Soll der Name casesensitive werden, muss der Befehl eben
    Rename "OldName" to "NewName" for system name SYSNAME
    lauten.
    Allerdings bringt dir das ja bei 10-stelligen Namen eher wenig, da ja der Systemname und Tablename alternativ verwendet werden kann.
    Was für einen Sinn macht es,
    select * from "Passport"
    von
    select * from passport
    oder
    SELECT * FROM PASSPORT
    zu unterscheiden?
    Ich denke mal die DB übernimmt den 10-stelligen Systemnamen als Tabellen-Namen, wenn er den Richtlinien für Objektnamen entspricht.

    Moin,

    den Befehl kenne ich auch:

    RENAME TABLE "Passport" to "Passport" for SYSTEM NAME "PASSPORT"

    ...bringt aber bei mir folgende Fehlermeldung:

    > RENAME TABLE "Passport" to "Passport" for SYSTEM NAME "PASSPORT"
    SQL State: 428B8
    Vendor Code: -7029
    Message: [SQL7029] Neuer Name "Passport" ist ungültig. Ursache . . . . : Es wurde versucht, "Passport" in PARTNERLIB umzubenennen, der neue Name ist jedoch ungültig. Sowohl der neue Name als auch der neue Systemname sind gültige Systemnamen. Werden beide Namen in der Anweisung RENAME angegeben, kann nur der Name, der auf SYSTEM NAME folgt, ein gültiger Systemname sein. Fehlerbeseitigung: Einen der folgenden Schritte durchführen und die Anforderung wiederholen: -- Entweder den neuen Namen oder den neuen Systemnamen angeben. -- Den ersten Namen in einen Namen ändern, der als Systemname nicht gültig ist.

    Ein Rename lässt sich nur ausführen wenn der neue Name unterschiedlich zu dem alten Namen ist. Allerdings habe ich verschiedene Kombinationen ausprobiert und nicht das gewünschte Ergebnis erzielt - die Tabelle zunächst unter einem anderen Namen zu erzeugen kann ja auch nur eine Krücke sein.

    Allerdings bringt mir das nicht nur ein einheitliches Bild und nicht so etwas:
    PHP-Code:
                                  Mit Dateien arbeiten                              
                                                                                    
     Auswahl eingeben und Eingabetaste drücken
    .                                     
       
    1=Erstellen   3=Kopieren       4=Löschen   5=Physische Teildatei anzeigen    
       8
    =Dateibeschreibung anzeigen   9=Sichern   10=Zurückspeichern                
       13
    =Beschreibung ändern                          

                                 
                                                                                    
     Ausw  Datei       Bibliothek  Attribut    Text                                 
                                                                                    
           
    "Passport"  PARTNERLIB  PF                                               
           ADDRESSTYP  PARTNERLIB  PF          Address Type 
    Außerdem kann ich in diesen Fällen die Schreibweise nicht alternativ verwenden, da ich nur case-sensitiv oder nur upper-case umbenennen kann.
    Somit muss ich auch auf dem GreenScreen case-sensitiv arbeiten:
    dspffd partnerlib/"Passport"
    dspffd partnerlib/passport funktioniert nicht(!!!)

    Gruß
    Mr. Monk

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Na ja, das System weist doch mit der Fehlermeldung darauf hin, wenn der Tabellenname einem Systemnamen entspricht, dass dann nur der Systemname gesetzt werden kann.
    Beim Create Table wird der Systemname natürlich automatisch generiert.
    In deinem Beispiel ggf. PASSP00001.
    Somit kannst du den Systemnamen natürlich auch ansprechen.
    Aber warum machst du dir die Mühe überhaupt?
    Wenn du doch mit SQL arbeitest und unbedingt casesensitive, dann ignoriere doch die Systemnamen einfach. Für die Anzeige von Tabelleninformationen gibt es dann andere Hilfsmittel als den DSPFD/FFD.
    Z.B. diverse SQL-Explorer, den iSeries-Navigator, u.v.m.
    Ja ich weiß, nicht auf dem Greenscreen.
    Aber da gibts dann die selben Schwierigkeiten mit den casesensitiven Feldnamen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Zitat Zitat von wti Beitrag anzeigen
    Bei kurzen SQL-Namen arbeitet der RENAME nicht wie erwartet: ...
    Dann sind wohl deine Erwartungen zu hoch:
    DB2 Universal Database for iSeries SQL Reference - RENAME

    Und Vorsicht bei Systemnamen in doppelten Anführungszeichen:
    CL concepts > Objects > Object naming rules > Names (*NAME) - *NAME (basic name in quoted form)

Similar Threads

  1. RENAME Problem
    By a.wojcik in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 26-01-16, 07:49
  2. Löschen per SQL in 2 Tabellen
    By harbir in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 12-03-14, 15:34
  3. Zugriff auf Tabellen langsam
    By JP in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 07-12-13, 11:01
  4. Tabellen in RPG IV
    By Gimli in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 31-03-03, 10:10
  5. via SQL Tabellen erstellen
    By infomio in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 10-07-02, 14:43

Berechtigungen

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