SQLite
 sql >> Base de données >  >> RDS >> SQLite

Instruction REMPLACER SQLite

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.