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.