sql >> Database >  >> RDS >> SQLite

SQLite REPLACE-instructie

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.


  1. MIN() Functie in PostgreSQL

  2. T-SQL:Rond af op het dichtstbijzijnde interval van 15 minuten

  3. Item verwijderen uit ListView en Database met OnItemClickListener

  4. 5 tips om uw database veilig te houden