Samenvatting :in deze tutorial leer je hoe je de SQLite REPLACE
. gebruikt statement om de bestaande rij in een tabel in te voegen of te vervangen.
Inleiding tot de SQLite REPLACE
verklaring
Het idee van de REPLACE
verklaring is dat wanneer een UNIQUE
of PRIMARY KEY
beperkingsschending optreedt, doet het het volgende:
- Verwijder eerst de bestaande rij die een beperkingsschending veroorzaakt.
- Ten tweede, voeg een nieuwe rij in.
In de tweede stap, als er een beperking wordt geschonden, bijvoorbeeld NOT NULL
beperking optreedt, de REPLACE
statement zal de actie afbreken en de transactie terugdraaien.
Het volgende illustreert de syntaxis van de REPLACE
verklaring.
INSERT OR REPLACE INTO table(column_list)
VALUES(value_list);
Code language: SQL (Structured Query Language) (sql)
Of in een korte vorm:
REPLACE INTO table(column_list)
VALUES(value_list);
Code language: SQL (Structured Query Language) (sql)
Laten we eens kijken naar enkele voorbeelden van het gebruik van de SQLite REPLACE
verklaring om te begrijpen hoe het werkt.
De SQLite REPLACE
voorbeelden van uitspraken
Maak eerst een nieuwe tabel met de naam positions
met de volgende structuur.
CREATE TABLE IF NOT EXISTS positions (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
min_salary NUMERIC
);
Code language: SQL (Structured Query Language) (sql)
Probeer het
Ten tweede, voeg enkele rijen in op de positions
tafel.
INSERT INTO positions (title, min_salary)
VALUES ('DBA', 120000),
('Developer', 100000),
('Architect', 150000);
Code language: SQL (Structured Query Language) (sql)
Probeer het
Ten derde, verifieer de invoeging met behulp van de volgende SELECT
verklaring.
SELECT * FROM positions;
Code language: SQL (Structured Query Language) (sql)
Probeer het
De volgende instructie creëert een unieke index op de title
kolom van de positions
tabel om ervoor te zorgen dat deze geen dubbele positietitel heeft:
CREATE UNIQUE INDEX idx_positions_title
ON positions (title);
Code language: SQL (Structured Query Language) (sql)
Probeer het
Stel dat u een positie wilt toevoegen aan de positions
tabel als deze niet bestaat, als de positie bestaat, update de huidige.
De volgende REPLACE
statement voegt een nieuwe rij in de positions
tabel omdat de positietitel Full Stack Developer
staat niet op de positions
tafel.
REPLACE INTO positions (title, min_salary)
VALUES('Full Stack Developer', 140000);
Code language: SQL (Structured Query Language) (sql)
Probeer het
U kunt de REPLACE
. verifiëren bediening met de SELECT
verklaring.
SELECT
id,title,min_salary
FROM
positions;
Code language: SQL (Structured Query Language) (sql)
Probeer het
Zie de volgende verklaring.
REPLACE INTO positions (title, min_salary)
VALUES('DBA', 170000);
Code language: SQL (Structured Query Language) (sql)
Probeer het
Eerst controleerde SQLite de UNIQUE
beperking.
Ten tweede, omdat deze verklaring in strijd is met de UNIQUE
beperking door te proberen de DBA
. toe te voegen titel die al bestaat, heeft SQLite de bestaande rij verwijderd.
Ten derde heeft SQLite een nieuwe rij ingevoegd met de gegevens geleverd door de REPLACE
verklaring.
Merk op dat de REPLACE
statement betekent INSERT
of REPLACE
, niet INSERT
of UPDATE
.
Zie de volgende verklaring.
REPLACE INTO positions (id, min_salary)
VALUES(2, 110000);
Code language: SQL (Structured Query Language) (sql)
Probeer het
Wat de verklaring probeerde te doen, is de min_salary
. bij te werken voor de positie met id 2, dat is de ontwikkelaar.
Ten eerste bestaat de positie met id 2 al, de REPLACE
statement verwijdert het.
Vervolgens probeerde SQLite een nieuwe rij met twee kolommen in te voegen:( id
, min_salary
). Het schendt echter de NOT NULL
beperking van de titelkolom. Daarom draait SQLite de transactie terug.
Als de title
kolom heeft niet de NOT NULL
beperking, de REPLACE
statement zal een nieuwe rij invoegen waarvan de titelkolom NULL
is .
In deze tutorial hebben we je laten zien hoe je de SQLite REPLACE
. gebruikt statement om een rij in een tabel in te voegen of te vervangen.