¿Cómo puedo probar una instrucción UPDATE por ejemplo para ver si funcionaría, por ejemplo, si realmente actualizaría las filas, etc.?¿Cómo se prueba ejecutar una instrucción UPDATE en PostgreSQL?
¿Hay alguna manera de simularlo fácilmente?
¿Cómo puedo probar una instrucción UPDATE por ejemplo para ver si funcionaría, por ejemplo, si realmente actualizaría las filas, etc.?¿Cómo se prueba ejecutar una instrucción UPDATE en PostgreSQL?
¿Hay alguna manera de simularlo fácilmente?
Utilice un transaction para envolver la instrucción de actualización y una consulta de selección (para probar la actualización) y luego siempre gírelo hacia atrás.
Ejemplo:
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!
Una transacción normalmente termina con una confirmación, pero ya que usted está haciendo una prueba y no desea que los cambios sean permanentes sólo va a hacer retroceder.
Envuélvalo en un transaction, pruebe los resultados con un SELECCIONAR y retroceder al final.
BEGIN;
UPDATE ...;
SELECT ...;
ROLLBACK;
Puede usar RETURNING en la consulta UPDATE para omitir la consulta SELECT. –
Si decide mantener los cambios, use 'COMMIT' en lugar de' ROLLBACK'. –
@FrankHeikens Deberías ampliar eso en una respuesta, ¡muy útil! – mkataja
Ejecutar el mismo cheque con una instrucción SELECT en primer lugar: las filas devueltas por SELECT serán las filas modificadas por la actualización del
No es suficiente. Podría haber restricciones FK, CHECK, ... que un SELECT simple no golpearía. Un SELECT solo probaría la cláusula WHERE, pero la ACTUALIZACIÓN podría fallar aunque el SELECTO tenga éxito. –
Siempre puede crear una base de datos de muestra en SQL Fiddle y probar allí sus declaraciones de actualización.
La revelación completa: yo soy el autor de sqlfiddle.com
Dada esta simple actualización:
UPDATE Products
SET price_including_vat = price * 1.05
WHERE product_type = 'Food';
me pondría a prueba usando algo como esto:
SELECT price_including_vat AS price_including_vat__before,
price * 1.05 AS price_including_vat__after,
*
FROM Products
WHERE product_type = 'Food';
En realidad, Probablemente involucraría el cerebro y haría un análisis más como este:
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;
Puede usar una herramienta que le permita tomar una instantánea de la base de datos y deshacerla fácilmente. Recomiendo OffScale - es básicamente git para bases de datos.
La página de inicio dice que esto solo funciona con MySQL, o al menos no hay documentación sobre cómo configurarlo con un DBMS diferente –
¿Hay alguna manera de simularlo fácilmente? – user1154863