IF EXISTS bei SELECT möglich?

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

  • IF EXISTS bei SELECT möglich?

    Moin

    Gibts eigentlich eine Möglichkeit bei einem SELECT zu prüfen, ob die Tabelle existiert, so wie bei DROP TABLE IF EXISTS tablename ?
    so nach dem Prinzip SELECT field FROm IF EXISTS tablename ...

    Auf unserem Server läuft nachts ein cronjobs, der eine Tabelle neu zusammenstellt. Dabei werden die Daten in eine temporäre Tabelle geschrieben, dann das Original gelöscht und die Temp-Tabelle wieder umbenannt.
    Wenn jetzt andere Skripte genau in der Zeit zwischen löschen und umbennen auf die Tabelle zugreifen wollen, gibts einen mysql-error.
    Daher die obige Frage.
    Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

  • #2
    Dafür gibt es LOCKs.

    Kommentar


    • #3
      Und wie soll ich eine Tabelle mit LOCK sperren, die gerade nicht da ist.

      Oder funzt das lock auch dann noch?
      so nach dem Prinzip:

      LOCK TABLE table1;
      DELETE table1;
      ALTER table_temp RENAME table1;
      UNLOCK table1;

      Ist dann die Tabelle zwischen Löschen und Umbennen der temp immer noch für SELECTs gesperrt?
      Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

      Kommentar


      • #4
        Re: IF EXISTS bei SELECT möglich?

        Original geschrieben von thommyk
        Moin

        Gibts eigentlich eine Möglichkeit bei einem SELECT zu prüfen, ob die Tabelle existiert, so wie bei DROP TABLE IF EXISTS tablename ?
        so nach dem Prinzip SELECT field FROm IF EXISTS tablename ...
        Warum sollte es das geben. DROP TABLE ist DDL dabei ist's sinnvoll ... SELECT Statements beziehen sich auf eine bestehende Datenbank Struktur ... und ich denke ob Deiner Frage dort liegt Dein Problem ... !
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          Nein, kannst natürlich keine Tabelle sperren, die es gar nicht gibt. Ich habe es noch nie versucht, aber selbst wenn dein oben geposteter Ablauf funktioniert, würde ich merkwürdige Nebenwirkungen erwarten.

          Aber wozu auch die Tabelle löschen, nur um die Daten darin zu ändern?
          (Mehr als die Daten kannst du ohnehin nicht ändern, sonst funktionieren deine Applikationen nicht mehr.)

          Kommentar

          Lädt...
          X