Ankündigung

Einklappen
Keine Ankündigung bisher.

Create table if exists

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Create table if exists

    CREATE TABLE IF NOT EXISTS `database`.`tab_002` LIKE `database`.`tab_001`;

    obiger MySQL Syntax erzeugt eine neue Tabelle tab_002, wenn diese nicht existiert und tab_001 vorhanden ist. Fehlt tab_001 wird eine Fehlermeldung ausgegeben.

    Wie kann ich im MySQL-Syntax den Befehl so modifizieren, daß er nur ausgeführt wird, wenn tab_001 auch existiert?

    Ich habe dazu 2 Tage mittels google gesucht und keine Lösung gefunden.

  • #2
    Zitat von MyKK Beitrag anzeigen
    obiger MySQL Syntax erzeugt eine neue Tabelle tab_002, wenn diese nicht existiert und tab_001 vorhanden ist. Fehlt tab_001 wird eine Fehlermeldung ausgegeben.

    Wie kann ich im MySQL-Syntax den Befehl so modifizieren, daß er nur ausgeführt wird, wenn tab_001 auch existiert?
    Die Fehlermeldung einfach abfangen?
    "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

    Kommentar


    • #3
      mir ist nicht bekannt wie ich die Fehlermeldung in der SQL-Befehlszeile abfangen kann, so daß die nächste Befehlszeile abgearbeitet wird. z.B.:

      wenn CA_008 bis CA_001 noch nicht existieren.

      RENAME TABLE `db`.`CA_008` TO `db`.`CA_009`;
      RENAME TABLE `db`.`CA_007` TO `db`.`CA_008`;
      RENAME TABLE `db`.`CA_006` TO `db`.`CA_007`;
      RENAME TABLE `db`.`CA_005` TO `db`.`CA_006`;
      RENAME TABLE `db`.`CA_004` TO `db`.`CA_005`;
      RENAME TABLE `db`.`CA_003` TO `db`.`CA_004`;
      RENAME TABLE `db`.`CA_002` TO `db`.`CA_003`;
      RENAME TABLE `db`.`CA_001` TO `db`.`CA_002`;
      RENAME TABLE `db`.`CA` TO `db`.`CA_001`;

      Kommentar


      • #4
        Zitat von MyKK Beitrag anzeigen
        mir ist nicht bekannt wie ich die Fehlermeldung in der SQL-Befehlszeile abfangen kann, so daß die nächste Befehlszeile abgearbeitet wird. z.B.:

        wenn CA_008 bis CA_001 noch nicht existieren.

        RENAME TABLE `db`.`CA_008` TO `db`.`CA_009`;
        RENAME TABLE `db`.`CA_007` TO `db`.`CA_008`;
        RENAME TABLE `db`.`CA_006` TO `db`.`CA_007`;
        RENAME TABLE `db`.`CA_005` TO `db`.`CA_006`;
        RENAME TABLE `db`.`CA_004` TO `db`.`CA_005`;
        RENAME TABLE `db`.`CA_003` TO `db`.`CA_004`;
        RENAME TABLE `db`.`CA_002` TO `db`.`CA_003`;
        RENAME TABLE `db`.`CA_001` TO `db`.`CA_002`;
        RENAME TABLE `db`.`CA` TO `db`.`CA_001`;
        Wie willst du was umbenennen, was nicht existiert?
        ACHTUNG!!! SIGNATUR!!!
        PHP-Code:
        var_dump($gehirn); exit; 
        0 ??? WTF ? nervtag.de | freutag.net | friendmetr.com

        Kommentar


        • #5
          Das sieht irgendwie nach Archivierung oder so aus? Vielleicht solltest du dir da ein anderes Konzept überlegen.

          Kommentar


          • #6
            Wieso werden die Tabellen überhaupt durchnummeriert?
            [url]www.php-maven.org[/url] PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
            Twitter @ [url]https://twitter.com/#!/mepeisen[/url] und Facebook @ [url]http://t.co/DZnKSUih[/url]

            Kommentar


            • #7
              bevor ich die Struktur einer Tabelle ändere möchte ich den Dateninhalt sichern.
              Dabei sollte nicht nur die letzte Änderung sondern auch ein par der Vorhergehenden aufgehoben werden (im Beispiel eben 9)

              Bedingung: alles ohne PHP nur SQL-Code!

              Problem: nicht vorhandene Tabellen führen zur Fehlermeldung und dem Abbruch des SQL-Code sowohl bei Create ... LIKE
              oder RENAME

              Fehler abfange finde ich gut weiß aber nicht wie und IF EXISTS bezieht sich immer nur auf die Zieltabelle nicht aber auf die Quelltabelle bzw. ich habe keine Code dafür gefunden.

              Kommentar


              • #8
                Mit was führst du die SQL Statments aus? Wenn du mysql im Batchmodus nutzt kannst du mit der Option -f ein Abbruch bei Fehlern verhindern.

                Kommentar


                • #9
                  mit phpMyAdmin 3.2.0 Funktion Import - textdatei von meinem Client

                  wie es scheint gibt es doch keine einfache Lösung sowohl Quelle als auch Ziel im CREATE oder RENAME auf ihre Existenz abzufragen.

                  Ein anderer Ansatz wäre CASE WHEN oder IF THEN. Hat jemand Erfahrung damit und ob sich das mit phpMyAdmin und Import einer textdatei realisieren läßt?

                  Kommentar


                  • #10
                    wie wärs, wenn du einfach alle tabelle die existieren müssen vorher per
                    CREATE TABLE IF NOT EXISTS
                    einfach anlegst.

                    lg
                    draco

                    Kommentar

                    Lädt...
                    X