Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> aktualizowanie bazy, kontorla aktualizacji
krzyszbi
post
Post #1





Grupa: Zarejestrowani
Postów: 251
Pomógł: 13
Dołączył: 15.09.2005

Ostrzeżenie: (0%)
-----


witam
mam taki problem a mianowicie
mam sobie bazę
w niej stworzona funkcję zwracającą dane o niej
na podstawie tej funkcji sprawdzam czy aktualizacja jest przeznaczona dla tej bazy
i teraz czy jest możliwość aby po sprawdzeniu wyjść z wykonywanego skryptu sql
skrypt będzie odpalany albo z phpMyAdmin-a albo z linii poleceń
ogólnie chodzi mi o cos takiego
  1. IF getDbName()!='test' THEN exit sq; script;
  2. END IF;
  3. -- a tu reszta skryptu sql do wykonania


da się coś takiego w mysql-u osiągnąć (IMG:style_emoticons/default/questionmark.gif) szukam po dokumentacji ale jakoś nie mogę znaleźć jak if-a poza SELECT-em wykorzystać
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
krzyszbi
post
Post #2





Grupa: Zarejestrowani
Postów: 251
Pomógł: 13
Dołączył: 15.09.2005

Ostrzeżenie: (0%)
-----


no ok ale baza zawsze bedzie istnieć
chodzi mi o coś co pozwoli w skrypcie zatrzymać jego dalsze wykonywanie
ogólnie przerwanie wykonywania skryptu aql po wykryciu niezgodności
  1. DROP PROCEDURE IF EXISTS `checkUpdate`;
  2. delimiter //
  3. CREATE PROCEDURE checkUpdate(IN dbname VARCHAR(125))
  4. BEGIN
  5. IF dbname!=getDbName() THEN
  6. SELECT COUNT(*) FROM `total`; -- błędne zapytanie i tu chę kończyc działanie skryptu sql
  7. END IF;
  8. END;
  9. delimiter ;

i wykozystanie
  1. USE baza_dev_test;
  2. INSERT INTO `baza_dev_test`.`test` ( `id` , `name` ) VALUES ( NULL , 'Pierwszy insert po wyborze bazy' );
  3. CALL checkUpdate('test_dev');
  4. INSERT INTO `baza_dev_test`.`test` ( `id` , `name` ) VALUES ( NULL , 'Indert po prawidłowo wykonanej procedurze, powinien się dodać ' );
  5. CALL checkUpdate('test_ded');
  6. -- nie taka baza ( lub wersja, zależnie co bedę sprawdzał ) i chę aby zakończył działanie
  7. INSERT INTO `baza_dev_test`.`test` ( `id` , `name` ) VALUES ( NULL , 'Niewykonany insert po procedurze z crash-em' );

wywołanie
Kod
mysql> source c:/sql.sql;
Database changed
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
ERROR 1146 (42S02): Table baza_dev_test.total' doesn't exist //ok tu się wywala bo tak ma byc :)
Query OK, 1 row affected (0.00 sec) //ale juz tego nie chcę aby wykonywał

da się cos takiego osiągnąć?? i jeśli tak to już prawie jestem w domu

Ten post edytował krzyszbi 12.10.2009, 19:03:04
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 06:10