ASSERT en SQL
Un cable trampa para invariantes: falla fuerte apenas pasa lo imposible.
-- ASSERT is a tripwire for things that must always hold.
DO $$
DECLARE
order_count BIGINT;
BEGIN
SELECT COUNT(*)
INTO order_count
FROM orders;
ASSERT order_count > 0, 'fixture must ship with orders';
RAISE NOTICE 'invariant holds: % orders', order_count;
END;
$$;
Cómo funciona
ASSERT order_count > 0, '...'lanza si la condición es falsa.- El mensaje nombra el supuesto roto para quien lea la bitácora.
- Los asserts pueden apagarse globalmente: guardan invariantes, no entradas.
Palabras clave y builtins usados aquí
BEGINBIGINTCOUNTDECLAREDOENDFROMINTOSELECT
El intento, en números
- Líneas
- 12
- Caracteres a escribir
- 264
- Tokens
- 37
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 32 segundos.
Paso 2 de 4 en Errores y triggers; paso 18 de 23 en Procedimientos almacenados de PostgreSQL.