PDA

Ver la Versión Completa : Como ejecutar el if not exists en PG


uper
26-09-2016, 19:58:46
buenas tardes, tengo que agregar registros a una tabla segun sea el caso si ya existe que se actualice sino se inserte un nuevo registro pero el caso es que me marca error en el if desde el Query del Pgadmin

ERROR: error de sintaxis en o cerca de «if»
LINE 4: if not exists (select rfc from datossolcliente where not exi...

Existe algo parecido al sql server pero en postgres como seria:


if not exists (select rfc from datossolcliente where suc='HRM' and rfc='ISP010123QW4') then
Insert into datossolcliente(suc, cuenta, rfc, diaspago) values('001','000035', 'ISP0101'01000,'1');
else
Update datossolcliente set cuenta='000035', diaspago='3' where suc='HRM' and rfc='ISP010123QW4'
end if


les agradesco, gracias

aposi
26-09-2016, 20:11:56
mira si con esto lo puedes solucionar:

https://www.postgresql.org/docs/9.5/static/sql-insert.html

mamcx
26-09-2016, 20:34:39
Para poder ejecutar comandos procedurales tienen que estar dentro de una funcion.

uper
26-09-2016, 22:10:11
ok, revisare como se crean los sp para despues llamrlos a ejecutar

gracias

gatosoft
28-09-2016, 05:30:15
No existe una función asi, pero puedes hacer lo siguiente:


UPDATE table SET field='C', field2='Z' WHERE id=3;
INSERT INTO table (id, field, field2)
SELECT 3, 'C', 'Z'
WHERE NOT EXISTS (SELECT 1 FROM table WHERE id=3);

Ver solución en StackOverflow (http://stackoverflow.com/questions/11135501/postgresql-update-if-row-with-some-unique-value-exists-else-insert) o ésta otra alternativa eb en GitHub (https://gist.github.com/cecilemuller/3081392)