Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   dudas Insert If Not Exist (https://www.clubdelphi.com/foros/showthread.php?t=25677)

bustio 29-09-2005 22:45:27

dudas Insert If Not Exist
 
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:
[MySQL]INSERT IF NOT EXIST INTO personas(noci,nombre.. etc) VALUES (xxxxx)[/MySQL] 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

Para dejarlo completo
 
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

Código SQL [-]
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


La franja horaria es GMT +2. Ahora son las 03:05:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi