Jak mogę przetestować instrukcję UPDATE na przykład, aby zobaczyć, czy zadziała, na przykład, czy faktycznie zaktualizuje wiersze itp?Jak przetestować uruchomienie instrukcji UPDATE w PostgreSQL?
Czy istnieje sposób na łatwą symulację?
Jak mogę przetestować instrukcję UPDATE na przykład, aby zobaczyć, czy zadziała, na przykład, czy faktycznie zaktualizuje wiersze itp?Jak przetestować uruchomienie instrukcji UPDATE w PostgreSQL?
Czy istnieje sposób na łatwą symulację?
Użyj transaction owinąć swoje oświadczenie aktualizacji i kwerendę wybierającą (przetestować aktualizację), a następnie zawsze go wycofywać.
Przykład:
BEGIN;
UPDATE accounts SET balance = balance - 100.00
WHERE name = 'Alice';
SELECT accounts WHERE WHERE name = 'Alice';
ROLLBACK; -- << Important! Un-does your UPDATE statement above!
Transakcja zazwyczaj kończy się popełnić, ale ponieważ jesteś po prostu testuje i nie chcesz, aby zmiany stały się będzie po prostu wycofać.
Zawiń go w transaction, przetestuj wyniki za pomocą SELECT i wycofaj na końcu.
BEGIN;
UPDATE ...;
SELECT ...;
ROLLBACK;
Możesz użyć RETURNING w kwerendie UPDATE, aby pominąć zapytanie SELECT. –
Jeśli zdecydujesz się zachować zmiany, użyj 'COMMIT' zamiast' ROLLBACK'. –
@FrankHeikens Powinieneś rozwinąć to w odpowiedź, bardzo przydatna! – mkataja
Uruchom samo sprawdzanie pierwszy SELECT: wiersze zwracane przez SELECT będzie wiersze zmodyfikowane przez UPDATE
Niewystarczające. Mogą istnieć ograniczenia FK, CHECK, ... że prosty SELECT nie zostanie trafiony. SELECT przetestuje tylko klauzulę WHERE, ale UPDATE może się nie powieść, nawet jeśli SELECT się powiedzie. –
Zawsze można utworzyć przykładową bazę danych pod numerem SQL Fiddle i wypróbować tam swoje instrukcje aktualizacji.
Pełne ujawnienie: Jestem autorem sqlfiddle.com
Biorąc pod uwagę to prosta zmiana:
UPDATE Products
SET price_including_vat = price * 1.05
WHERE product_type = 'Food';
bym go przetestować za pomocą czegoś takiego:
SELECT price_including_vat AS price_including_vat__before,
price * 1.05 AS price_including_vat__after,
*
FROM Products
WHERE product_type = 'Food';
Właściwie, "w stanie bardziej angażować mózg i wykonywać analizy bardziej w ten sposób:
WITH updated AS
(
SELECT price_including_vat AS price_including_vat__before,
price * 1.05 AS price_including_vat__after,
*
FROM Products
WHERE product_type = 'Food'
)
SELECT *
FROM updated
WHERE price_including_vat__before = price_including_vat__after;
Możesz użyć narzędzia, które pozwala łatwo zrobić migawkę bazy danych i przywrócić ją. Polecam OffScale - to w zasadzie git dla baz danych.
Strona główna mówi, że działa tylko z MySQL - a przynajmniej nie ma żadnej dokumentacji na temat konfiguracji z innym DBMS –
Czy istnieje sposób na łatwą symulację? – user1154863