Résumé :dans ce tutoriel, vous apprendrez à utiliser le SQLite REPLACE
instruction pour insérer ou remplacer la ligne existante dans un tableau.
Introduction au SQLite REPLACE
déclaration
L'idée du REPLACE
déclaration est que lorsqu'un UNIQUE
ou PRIMARY KEY
une violation de contrainte se produit, il fait ce qui suit :
- Tout d'abord, supprimez la ligne existante qui provoque une violation de contrainte.
- Ensuite, insérez une nouvelle ligne.
Dans la deuxième étape, si une violation de contrainte, par exemple, NOT NULL
contrainte se produit, le REPLACE
annulera l'action et annulera la transaction.
Ce qui suit illustre la syntaxe du REPLACE
déclaration.
INSERT OR REPLACE INTO table(column_list)
VALUES(value_list);
Code language: SQL (Structured Query Language) (sql)
Ou sous une forme courte :
REPLACE INTO table(column_list)
VALUES(value_list);
Code language: SQL (Structured Query Language) (sql)
Jetons un coup d'œil à quelques exemples d'utilisation de SQLite REPLACE
déclaration pour comprendre comment cela fonctionne.
Le SQLite REPLACE
exemples d'énoncés
Tout d'abord, créez une nouvelle table nommée positions
avec la structure suivante.
CREATE TABLE IF NOT EXISTS positions (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
min_salary NUMERIC
);
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Deuxièmement, insérez quelques lignes dans les positions
tableau.
INSERT INTO positions (title, min_salary)
VALUES ('DBA', 120000),
('Developer', 100000),
('Architect', 150000);
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Troisièmement, vérifiez l'insertion en utilisant le SELECT
suivant déclaration.
SELECT * FROM positions;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
L'instruction suivante crée un index unique sur le title
colonne des positions
tableau pour vous assurer qu'il n'y a pas de titre de poste en double :
CREATE UNIQUE INDEX idx_positions_title
ON positions (title);
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Supposons que vous souhaitiez ajouter une position dans les positions
table si elle n'existe pas, si la position existe, mettre à jour celle en cours.
Le REPLACE
suivant instruction insère une nouvelle ligne dans les positions
table car le titre du poste Full Stack Developer
n'est pas dans les positions
tableau.
REPLACE INTO positions (title, min_salary)
VALUES('Full Stack Developer', 140000);
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Vous pouvez vérifier le REPLACE
opération à l'aide de SELECT
déclaration.
SELECT
id,title,min_salary
FROM
positions;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Voir la déclaration suivante.
REPLACE INTO positions (title, min_salary)
VALUES('DBA', 170000);
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Tout d'abord, SQLite a vérifié le UNIQUE
contrainte.
Deuxièmement, parce que cette déclaration a violé le UNIQUE
contrainte en essayant d'ajouter le DBA
titre qui existe déjà, SQLite a supprimé la ligne existante.
Troisièmement, SQLite a inséré une nouvelle ligne avec les données fournies par le REPLACE
déclaration.
Notez que le REPLACE
instruction signifie INSERT
ou REPLACE
, pas INSERT
ou UPDATE
.
Voir la déclaration suivante.
REPLACE INTO positions (id, min_salary)
VALUES(2, 110000);
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Ce que la déclaration a essayé de faire est de mettre à jour le min_salary
pour le poste avec l'id 2, qui est le développeur.
Tout d'abord, la position avec l'id 2 existe déjà, le REPLACE
l'instruction le supprime.
Ensuite, SQLite a essayé d'insérer une nouvelle ligne avec deux colonnes :( id
, min_salary
). Cependant, il viole le NOT NULL
contrainte de la colonne de titre. Par conséquent, SQLite annule la transaction.
Si le title
la colonne n'a pas le NOT NULL
contrainte, la REPLACE
insérera une nouvelle ligne dont la colonne de titre est NULL
.
Dans ce tutoriel, nous vous avons montré comment utiliser le SQLite REPLACE
instruction pour insérer ou remplacer une ligne dans un tableau.