Resumen :en este tutorial, aprenderá a usar SQLite REPLACE instrucción para insertar o reemplazar la fila existente en una tabla.
Introducción a SQLite REPLACE declaración
La idea del REPLACE declaración es que cuando un UNIQUE o PRIMARY KEY se produce una violación de la restricción, hace lo siguiente:
- Primero, elimine la fila existente que causa una violación de restricción.
- Segundo, inserte una nueva fila.
En el segundo paso, si se viola alguna restricción, por ejemplo, NOT NULL se produce una restricción, REPLACE declaración cancelará la acción y revertirá la transacción.
A continuación se ilustra la sintaxis de REPLACE declaración.
INSERT OR REPLACE INTO table(column_list)
VALUES(value_list);Code language: SQL (Structured Query Language) (sql) O en forma abreviada:
REPLACE INTO table(column_list)
VALUES(value_list);Code language: SQL (Structured Query Language) (sql)
Echemos un vistazo a algunos ejemplos del uso de SQLite REPLACE declaración para entender cómo funciona.
El SQLite REPLACE ejemplos de declaraciones
Primero, cree una nueva tabla llamada positions con la siguiente estructura.
CREATE TABLE IF NOT EXISTS positions (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
min_salary NUMERIC
);Code language: SQL (Structured Query Language) (sql) Pruébalo
En segundo lugar, inserte algunas filas en las positions mesa.
INSERT INTO positions (title, min_salary)
VALUES ('DBA', 120000),
('Developer', 100000),
('Architect', 150000);Code language: SQL (Structured Query Language) (sql) Pruébalo
Tercero, verifique el inserto usando el siguiente SELECT declaración.
SELECT * FROM positions;Code language: SQL (Structured Query Language) (sql) Pruébalo
La siguiente declaración crea un índice único en el title columna de las positions tabla para asegurarse de que no tenga ningún título de puesto duplicado:
CREATE UNIQUE INDEX idx_positions_title
ON positions (title);Code language: SQL (Structured Query Language) (sql) Pruébalo
Supongamos que desea agregar una posición a las positions table si no existe, en caso de que exista el puesto actualizar el actual.
El siguiente REPLACE declaración inserta una nueva fila en las positions porque el título del puesto Full Stack Developer no está en las positions mesa.
REPLACE INTO positions (title, min_salary)
VALUES('Full Stack Developer', 140000);Code language: SQL (Structured Query Language) (sql) Pruébalo
Puede verificar el REPLACE operación usando el SELECT declaración.
SELECT
id,title,min_salary
FROM
positions;Code language: SQL (Structured Query Language) (sql) Pruébalo
Consulte la siguiente declaración.
REPLACE INTO positions (title, min_salary)
VALUES('DBA', 170000);
Code language: SQL (Structured Query Language) (sql) Pruébalo
Primero, SQLite verificó el UNIQUE restricción.
Segundo, porque esta declaración violó el UNIQUE restricción al intentar agregar el DBA título que ya existe, SQLite eliminó la fila existente.
En tercer lugar, SQLite insertó una nueva fila con los datos proporcionados por REPLACE declaración.
Observe que REPLACE instrucción significa INSERT o REPLACE , no INSERT o UPDATE .
Consulte la siguiente declaración.
REPLACE INTO positions (id, min_salary)
VALUES(2, 110000);Code language: SQL (Structured Query Language) (sql) Pruébalo
Lo que la declaración intentó hacer es actualizar el min_salary para el puesto con id 2, que es el desarrollador.
Primero, la posición con id 2 ya existe, el REPLACE declaración lo elimina.
Luego, SQLite intentó insertar una nueva fila con dos columnas:( id , min_salary ). Sin embargo, viola el NOT NULL restricción de la columna de título. Por lo tanto, SQLite revierte la transacción.
Si el title la columna no tiene el NOT NULL restricción, el REPLACE declaración insertará una nueva fila cuya columna de título es NULL .
En este tutorial, le mostramos cómo usar SQLite REPLACE instrucción para insertar o reemplazar una fila en una tabla.