Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
IF EXISTS bei SELECT möglich? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
IF EXISTS bei SELECT möglich?


 
thommyk
04-08-2006, 13:05 
 
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.

 
onemorenerd
04-08-2006, 14:32 
 
Dafür gibt es LOCKs.

 
thommyk
04-08-2006, 17:34 
 
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?

 
goth
04-08-2006, 19:31 
 
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 ... !

 
onemorenerd
04-08-2006, 20:56 
 
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.)

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:11 Uhr.