sql >> Base de Datos >  >> RDS >> PostgreSQL

Escribir una consulta SQL Get o Create de Postgres

En un DBMS SQL, el enfoque de selección-prueba-inserción es un error:nada impide que otro proceso inserte la fila "faltante" entre su select y insert declaraciones. Haz esto en su lugar:

INSERT INTO mytable (color, brightness, size, age)
SELECT color, brightness, size, age 
FROM mytable
WHERE NOT EXISTS (
    select 1 from 
    from mytable
    where color = 'X' and brightness = 'Y'
);
SELECT (color, brightness, size, age) 
FROM mytable 
WHERE color = 'X' AND brightness= 'Y';

Debería poder pasar ese texto completo como una sola "consulta" al DBMS. Es posible que desee considerar convertirlo en un procedimiento almacenado.