Announcement

Collapse
No announcement yet.

Datenbank Tabellenspalte verändern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenbank Tabellenspalte verändern

    Hallo,

    ich möchte mittels eines SQL-Befehls während des Programmlaufes die Datenbankstruktur einer PARADOX-Tabelle verändern.
    Ich habe ein Charakter-Feld der Länge 10 und muß dieses jetzt auf 30 vergrößern. Das ist zwar mit der Datenbankoberfläche leicht möglich, doch das kann ich dem Kunden nicht zumuten. Wie kann ich das z.B. mit dem "alter table" - Befehl bewerkstelligen ?

    Danke - Peter

  • #2
    alter table TABLE_NAME modify FELDNAME VARCHAR2(120)
    Christian

    Comment


    • #3
      Hi Christian,

      leider kennt das Local SQL den Befehl "modify" nicht.
      Ich mach das gerade zu Fuß, in dem ich ein neues Hilfsfeld anlegen, die Daten dorthin kopiere, das alte Feld lösche, den alten Feldnamen mit der neuen Größe anlege, die Daten aus dem Hilfsfeld wieder zurück kopiere und dann das Hilfsfeld wieder löschen. Man - ist das ein Mist. Vielleicht gibt es ja doch noch etwas eleganteres.

      Bye - Pete

      Comment


      • #4
        Hallo #
        <p>
        DbiDoRestructure
        <br>
        Startpunkt, für c++ leider wenig Beispiele
        http://info.borland.com/devsupport/bde/
        <p>
        http://info.borland.com/devsupport/bde/bdeapiex/
        Dort nach DbiDoRestructure suchen
        <p>
        Das klappt aber nur bei exclusivem Zugriff auf die Tabelle, aber dass alter table add und koieren geht ja auch nur exclsuiv.
        <p>
        Heik

        Comment


        • #5
          So geht es auch in purem SQL:
          1. sichere original Daten in eine temporäre Spalte
          2. vergrößere die original Spalte
          3. sichere die Daten zurück

          #define FN(SQLstmt) dbDatabase->Execute( SQLstmt, NULL, false, NULL )
          FN("ALTER TABLE tab ADD COLUMN tmp CHAR(30)"); // create tmp
          FN("UPDATE tab SET tmp = src"); // save current src in tmp
          FN("ALTER TABLE tab DROP COLUMN src"); // expand src
          FN("ALTER TABLE tab ADD COLUMN src CHAR(60)"); // to 60 chars
          FN("UPDATE tab SET src = tmp"); // copy tmp back to src
          FN("ALTER TABLE tab DROP COLUMN tmp"); // drop tmp
          #undef FN

          Comment


          • #6
            Hi kwarnke.

            ich hätte nicht gedacht, daß noch jemand 3 Jahre alte Beiträge beantwortet. So habe ich das mittlerweile auch gelöst. Ich dachte nur, es würde einfacher gehen.

            Trotzdem Danke - Peter

            Comment

            Working...
            X