Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> aktualizowanie bazy, kontorla aktualizacji
krzyszbi
post 12.10.2009, 09:33:57
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ąć questionmark.gif szukam po dokumentacji ale jakoś nie mogę znaleźć jak if-a poza SELECT-em wykorzystać


--------------------
Everything should be made as simple as possible, but not simpler. - A.Eainstein
Go to the top of the page
+Quote Post
vokiel
post 12.10.2009, 11:06:09
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


  1. USE `nazwa_bazy`;


Jeśli baza nie istnieje dostaniesz błąd:
Kod
Error Code : 1049
Unknown database 'nazwa_bazy'


--------------------
Go to the top of the page
+Quote Post
krzyszbi
post 12.10.2009, 13:39:14
Post #3





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
[sql]
DROP PROCEDURE IF EXISTS `checkUpdate`;
delimiter /%2

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
[sql]
DROP PROCEDURE IF EXISTS `checkUpdate`;
delimiter /%2
Go to the top of the page
+Quote Post
vokiel
post 12.10.2009, 13:44:27
Post #4





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


To może odwrotnie warunek:
  1. IF getDbName()='test' THEN
  2. # reszta
  3. END IF;


--------------------
Go to the top of the page
+Quote Post
krzyszbi
post 12.10.2009, 13:47:49
Post #5





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

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 20:56