PDA

Ver la Versión Completa : dudas Insert If Not Exist


bustio
29-09-2005, 22:45:27
Hola:
Tengo una pequenna gran duda: Tengo una tabla en MySQL que contiene ciertas tuplas, y una de ellas son los datos de una persona incluyendo su numero de ID. Mi aplicacion registra personas, y lo hace por el Numero de ID propiamente. Entonces, yo necesito insertar una nueva tupla con todos sus datos si esta no esta ya insertada.

Pense en hacer algo asi:
INSERT IF NOT EXIST INTO personas(noci,nombre.. etc) VALUES (xxxxx) pero no me funciona, me da error.
Alguien podria indicarme cual es el error y la manera correcta de lograr este resultado?

marcoszorrilla
29-09-2005, 22:57:39
No trabajo con MySql, pero una solución sería lanzar una consulta SQL buscando dicho código, si te devuelve registros, entonces existe y con un simple If te saltas el insert.....

Un Saludo.

Miguel Galarza
07-08-2007, 17:25:20
aunque fuera de tiempo es para que si alguno lo necesita pongo esto. TEngo una tabla de mis clientes y como los datos son ingresados de una importacion externa no se quienes tienen asignada clave para acceder desde la web, hace una insercion de los datos que NO EXISTAN en la tabla a actualizar

INSERT INTO PadronC(IDContribuyente, CUIT, Verificado, Clave)
SELECT t1.IDContribuyente, t1.CUIT, 'N' , t1.IDContribuyente FROM
Padron t1 where NOT EXISTS(SELECT t.IDContribuyente from PadronC t WHERE t.IDContribuyente=t1.IDContribuyente)

papulo
07-08-2007, 17:55:50
Primero averigua si existe o no ese ID con una consulta "select X from Y where ID=123442" y luego haz un UPDATE o un INSERT, dependiendo del resultado de la primera consulta.

Yo al menos lo haría así.

roman
07-08-2007, 18:39:52
En MySQL se puede usar


insert ignore into tabla
.....


Con esta opción, si el registro que va a insertarse repetiría una llave, entonces no se inserta y no genera error.

También, MySQL tiene la opción INSERT ... ON DUPLICATE o bien la sentencia REPLACE que permite, en caso de llave repetida, actualizar los otros campos.

// Saludos