SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite REPLACE-Anweisung

Zusammenfassung :In diesem Tutorial lernen Sie, wie Sie den SQLite REPLACE verwenden Anweisung zum Einfügen oder Ersetzen der vorhandenen Zeile in einer Tabelle.

Einführung in SQLite REPLACE Erklärung

Die Idee des REPLACE Aussage ist das, wenn ein UNIQUE oder PRIMARY KEY eine Einschränkungsverletzung auftritt, geschieht Folgendes:

  • Löschen Sie zuerst die vorhandene Zeile, die eine Einschränkungsverletzung verursacht.
  • Zweitens, fügen Sie eine neue Zeile ein.

Im zweiten Schritt, wenn eine Einschränkungsverletzung vorliegt, z. B. NOT NULL Einschränkung auftritt, die REPLACE -Anweisung wird die Aktion abbrechen und die Transaktion rückgängig machen.

Im Folgenden wird die Syntax von REPLACE veranschaulicht Erklärung.

INSERT OR REPLACE INTO table(column_list)
VALUES(value_list);Code language: SQL (Structured Query Language) (sql)

Oder in Kurzform:

REPLACE INTO table(column_list)
VALUES(value_list);Code language: SQL (Structured Query Language) (sql)

Sehen wir uns einige Beispiele für die Verwendung von SQLite REPLACE an Erklärung, um zu verstehen, wie es funktioniert.

Das SQLite REPLACE Anweisungsbeispiele

Erstellen Sie zunächst eine neue Tabelle mit dem Namen positions mit folgender Struktur.

CREATE TABLE IF NOT EXISTS positions (
	id INTEGER PRIMARY KEY,
	title TEXT NOT NULL,
	min_salary NUMERIC
);Code language: SQL (Structured Query Language) (sql)

Probieren Sie es aus

Zweitens fügen Sie einige Zeilen in die positions ein Tabelle.

INSERT INTO positions (title, min_salary)
VALUES ('DBA', 120000),
       ('Developer', 100000),
       ('Architect', 150000);Code language: SQL (Structured Query Language) (sql)

Probieren Sie es aus

Drittens überprüfen Sie die Einfügung mit dem folgenden SELECT Erklärung.

SELECT * FROM positions;Code language: SQL (Structured Query Language) (sql)

Probieren Sie es aus

Die folgende Anweisung erstellt einen eindeutigen Index für title Spalte der positions Tabelle, um sicherzustellen, dass es keine doppelten Positionstitel gibt:

CREATE UNIQUE INDEX idx_positions_title 
ON positions (title);Code language: SQL (Structured Query Language) (sql)

Probieren Sie es aus

Angenommen, Sie möchten eine Position zu den positions hinzufügen Tabelle, wenn sie nicht existiert, falls die Position existiert, aktualisieren Sie die aktuelle.

Das folgende REPLACE -Anweisung fügt eine neue Zeile an den positions ein Tabelle, da die Positionsbezeichnung Full Stack Developer ist steht nicht in den positions Tabelle.

REPLACE INTO positions (title, min_salary)
VALUES('Full Stack Developer', 140000);Code language: SQL (Structured Query Language) (sql)

Probieren Sie es aus

Sie können den REPLACE überprüfen Operation mit SELECT Erklärung.

SELECT
	id,title,min_salary
FROM
	positions;Code language: SQL (Structured Query Language) (sql)

Probieren Sie es aus

Siehe folgende Anweisung.

REPLACE INTO positions (title, min_salary)
VALUES('DBA', 170000);
Code language: SQL (Structured Query Language) (sql)

Probieren Sie es aus

Zuerst überprüfte SQLite den UNIQUE Einschränkung.

Zweitens, weil diese Anweisung den UNIQUE verletzt hat Einschränkung, indem Sie versuchen, den DBA hinzuzufügen Titel, der bereits vorhanden ist, hat SQLite die vorhandene Zeile gelöscht.

Drittens fügte SQLite eine neue Zeile mit den Daten ein, die von REPLACE bereitgestellt wurden Erklärung.

Beachten Sie, dass REPLACE Anweisung bedeutet INSERT oder REPLACE , nicht INSERT oder UPDATE .

Siehe folgende Anweisung.

REPLACE INTO positions (id, min_salary)
VALUES(2, 110000);Code language: SQL (Structured Query Language) (sql)

Probieren Sie es aus

Die Anweisung hat versucht, min_salary zu aktualisieren für die Position mit der ID 2, die der Entwickler ist.

Erstens existiert die Position mit der ID 2 bereits, der REPLACE Anweisung entfernt es.

Dann hat SQLite versucht, eine neue Zeile mit zwei Spalten einzufügen:( id , min_salary ). Es verstößt jedoch gegen NOT NULL Einschränkung der Titelspalte. Daher setzt SQLite die Transaktion zurück.

Wenn der title Spalte hat nicht den NOT NULL Beschränkung, das REPLACE -Anweisung fügt eine neue Zeile ein, deren Titelspalte NULL ist .

In diesem Tutorial haben wir Ihnen gezeigt, wie Sie den SQLite REPLACE verwenden Anweisung zum Einfügen oder Ersetzen einer Zeile in einer Tabelle.