2011-09-28 19 views
10

Czy istnieje sposób na przetestowanie zapytań mysql, bez modyfikowania mojej bazy danych?Symulacja zapytań mysql

Na przykład, czy mogę uruchomić delete from my_table where id=101 bez faktycznego usunięcia czegokolwiek? A co z wstawianiem i aktualizacją?

TY

+0

Dlaczego trzeba je testować? –

+2

@Pekka 웃 Aby ręcznie sprawdzić, czy aktualizacja wykonuje czynności, które Twoim zdaniem powinny zostać wykonane, zanim faktycznie to zrobisz. – Will

Odpowiedz

17

Możesz rozpocząć transakcję przed uruchomieniem zapytań, a następnie wycofać po ich uruchomieniu. Zauważ, że w tym celu będziesz potrzebował tabel InnoDB lub XtraDb (nie będzie działać na MyISAM).

Aby rozpocząć transakcję wysłać do MySQL następujące oświadczenie:

START TRANSACTION; 

I na koniec zapytań uruchom następujące oświadczenie:

ROLLBACK; 

Baza danych nigdy nie zostanie zmodyfikowany z punktu widoku innych połączeń. Twoje bieżące połączenie będzie widziało zmiany aż do ROLLBACK, a następnie przywrócony zostanie pierwotny stan.

+4

W porządku, teraz, gdy zdecyduję, że podoba mi się wyniki, jak je zapisać? 'TRANS TRANSACTION;'? Geez, teraz muszę przejść całą drogę do Google ... * wraca z powrotem * Odpowiedzią było ['COMMIT'] (http://dev.mysql.com/doc/refman/5.6/en/commit.html) . – Zenexer

1

Kopiowanie bazy danych do testowej bazy danych lub automatycznie wygenerować import-skrypt. Następnie możesz przetestować, co chcesz w bazie danych testów i przywrócić ją ponownie za pomocą skryptu lub importu.

5

Jeśli chcesz zobaczyć, ile wierszy zostanie usuniętych, dlaczego nie zastąpić "usuń" za pomocą "wybierz liczbę (*)"?