sql >> Database teknologi >  >> RDS >> PostgreSQL

Skriv en Postgres Få eller opret SQL-forespørgsel

I en SQL DBMS er select-test-insert tilgangen en fejl:intet forhindrer en anden proces i at indsætte den "manglende" række mellem din select og insert udsagn. Gør dette i stedet:

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';

Du bør være i stand til at sende hele teksten som en enkelt "forespørgsel" til DBMS. Du vil måske overveje at gøre det til en lagret procedure.



  1. Mutationstabel på Oracle SQL-trigger

  2. kan ikke gemme 0 eller 1 som boolesk laravel postgresql

  3. MySQL forbinder to tabeller med den maksimale værdi på et andet felt

  4. MySQL-trigger til kontrol af værdier før indsættelse flere gange