Haz tu Pregunta
0

Cómo hacer un insert if not exists en LibreOffice Base

preguntado 2020-01-26 08:49:26 +0100

Imagen Gravatar de uebeue8ebd

Buenas noches, espero que puedan ayudarme a realizar una consulta de SQL en Base.

Tengo una tabla llamada "Estudiante" que tiene tres atributos:

idEstudiante: Llave primaria autoincremental.

registro: VARCHAR(10) UNIQUE

nombre: VARCHAR(50)

La idea es tener una tabla con todos los estudiantes de varios cursos, evitando que se inserten estudiantes duplicados, ya que un estudiante puede estar matriculado en varios cursos.

Quiero hacer algo como lo siguiente:

INSERT IGNORE INTO "Estudiante" SELECT (null,'uni-2018-00001','nombreEstudiante1')

INSERT IGNORE INTO "Estudiante" SELECT (null,'uni-2018-00002','nombreEstudiante2')

INSERT IGNORE INTO "Estudiante" SELECT (null,'uni-2018-00001','nombreEstudiante1') <-- Aquí se trata de el mismo estudiante, lo que genera un problema ya que el atributo registro es único.

He probado con insert ignore into, if not exists y todo lo que conozco de sql y nada me funciona :(

Espero su colaboración. Muchas gracias de antemano

edit re-etiquetar marcar como ofensivo cerrar fusionar delete

1 Responder

Ordenar por » viejos nuevas más votado
0

respondido 2020-01-27 16:47:27 +0100

Imagen Gravatar de Longi

Sé que es un tanto primitio, pero eficaz: primero le preguntas si lo tiene, y en su defecto continúas, si no, te echa de la macro:

oCon = ThisDatabaseDocument.CurrentController.ActiveConnection
oStat = oCon.CreateStatement
oSQLQuery="SELECT ""idEstudiante "",""registro "", ""nombre"" FROM ""Estudiante "" ""Estudiante ""Where ""idEstudiante""= 'nombreEstudiante1 " oStat.setPropertyValue("ResultSetType",1005)
oResultSet = oStat.executeQuery(oSQLQuery)
Value=oResultSet.next

If Value=True Then Exit sub

Else ‘Aplicar el SQL de inserción

End if

edit marcar como ofensivo delete enlace mas
Ingresa/Regístrate para Contestar

Herramientas de Preguntas

1 seguidor

Estadisticas

Preguntado: 2020-01-26 08:49:26 +0100

Visto: 17 veces

Ultima actualización: Jan 27