Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Postgresql: como saber si inserto o no?

Estas en el tema de Postgresql: como saber si inserto o no? en el foro de Bases de Datos General en Foros del Web. Ok, tengo una duda... que logicamente es sencilla pero no la puedo aplicar a postgree ya que empiezo a jugar con el. cuando usas MS ...
  #1 (permalink)  
Antiguo 20/07/2005, 12:37
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 19 años, 6 meses
Puntos: 4
Postgresql: como saber si inserto o no?

Ok, tengo una duda... que logicamente es sencilla pero no la puedo aplicar a postgree ya que empiezo a jugar con el.
cuando usas MS SQL y haces un INSERT y su campo de ID es autonumerico o con identity en la variable global @@identity te da el numero del registro que inserto, y null si no pudo insertar... esto me sirve mucho para manejar errores.
Ahora bien, quiero hacer esto con Postgresql pero me he topado con el problema de la adaptacion a "su" lenguaje SQL... entonces se me ocurria que despues del insert, me devolviera el ultimo que inserto de esta manera "select max(id) from tabla" pero tiene un problema logico... que inserte o no, me devolvera la ultima fila... entonces no me funciona... se me vino otra idea, sacar el ultimo antes de insertar y despues y compararlos... pero nose pk me da error de sintaxis (y no lo pongo pk no dice nada, solo dice error de sintaxis cerca de la columna x)
entonces mi pregunta es:
tenemos en postgresql un comando/variable similar o igual a @@identity?
como puedo aplicar la logica de la comparacion si no existe el @@identity?


muchas gracias y espero una respuesta pronto....
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #2 (permalink)  
Antiguo 20/07/2005, 15:43
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 19 años, 6 meses
Puntos: 4
bueno, ya resolvi el problema... la forma de hacer el @@identity en POSTGRESQL es de la siguiente forma:
Código PHP:
CREATE OR REPLACE FUNCTION "public"."iusuarios" (usuario varcharpass varcharnivel_acceso integerRETURNS SETOF bigint AS
$body$
insert into usuarios (usuario,pass,nivel_acceso)
values ($1,$2,$3);
select currval('usuarios_id_seq');
$body$
LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:30.