Saltar al contenido

Declaración “Insertar si no existe” en SQLite

Tenemos la mejor información que descubrimos por todo internet. Nuestro deseo es que te sea de mucha utilidad y si puedes compartir cualquier detalle que nos pueda ayudar a crecer hazlo libremente.

Solución:

Si nunca desea tener duplicados, debe declarar esto como una restricción de tabla:

CREATE TABLE bookmarks(
    users_id INTEGER,
    lessoninfo_id INTEGER,
    UNIQUE(users_id, lessoninfo_id)
);

(Un primario key sobre ambas columnas tendría el mismo efecto.)

Entonces es posible decirle a la base de datos que desea ignorar silenciosamente los registros que violarían dicha restricción:

INSERT OR IGNORE INTO bookmarks(users_id, lessoninfo_id) VALUES(123, 456)

Si tiene una tabla llamada memos que tiene dos columnas id y text deberías poder hacer esto:

INSERT INTO memos(id,text) 
SELECT 5, 'text to insert' 
WHERE NOT EXISTS(SELECT 1 FROM memos WHERE id = 5 AND text = 'text to insert');

Si un registro ya contiene una fila donde text es igual a ‘texto para insertar’ y id es igual a 5, entonces se ignorará la operación de inserción.

No sé si esto funcionará para su consulta en particular, pero tal vez le dé una pista sobre cómo proceder.

Le aconsejaría que, en cambio, diseñe su tabla para que no se permitan duplicados como se explica en @CLs answer abajo.

Para una columna única, use esto:

INSERT OR REPLACE INTO table () values();

Para obtener más información, consulte: sqlite.org/lang_insert

Si te ha resultado de utilidad este artículo, sería de mucha ayuda si lo compartes con más entusiastas de la programación y nos ayudes a dar difusión a nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *