SQLite
 sql >> база данни >  >> RDS >> SQLite

Изявление на SQLite REPLACE

Резюме :в този урок ще научите как да използвате SQLite REPLACE оператор за вмъкване или замяна на съществуващия ред в таблица.

Въведение в SQLite REPLACE изявление

Идеята за REPLACE твърдението е, че когато UNIQUE или PRIMARY KEY възниква нарушение на ограничението, то прави следното:

  • Първо, изтрийте съществуващия ред, който причинява нарушение на ограничението.
  • Второ, вмъкнете нов ред.

Във втората стъпка, ако има някакво нарушение на ограничението, например NOT NULL възниква ограничение, REPLACE оператор ще прекрати действието и ще върне транзакцията назад.

Следното илюстрира синтаксиса на REPLACE изявление.

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

Или в кратка форма:

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

Нека да разгледаме някои примери за използване на SQLite REPLACE изявление, за да разберете как работи.

SQLite REPLACE примери за изрази

Първо създайте нова таблица с име positions със следната структура.

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

Опитайте го

Второ, вмъкнете няколко реда в positions таблица.

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

Опитайте го

Трето, проверете вмъкването, като използвате следния SELECT изявление.

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

Опитайте го

Следното изявление създава уникален индекс на title колона на positions таблица, за да се гарантира, че няма дублирано заглавие на позиция:

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

Опитайте го

Да предположим, че искате да добавите позиция в positions таблица, ако не съществува, в случай че позицията съществува, актуализирайте текущата.

Следният REPLACE оператор вмъква нов ред в positions таблица, защото заглавието на позицията Full Stack Developer не е в positions таблица.

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

Опитайте го

Можете да потвърдите REPLACE операция с помощта на SELECT изявление.

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

Опитайте го

Вижте следното изявление.

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

Опитайте го

Първо, SQLite провери UNIQUE ограничение.

Второ, защото това изявление нарушава UNIQUE ограничение, като се опитате да добавите DBA заглавие, което вече съществува, SQLite изтри съществуващия ред.

Трето, SQLite вмъкна нов ред с данните, предоставени от REPLACE изявление.

Забележете, че REPLACE израз означава INSERT или REPLACE , а не INSERT или UPDATE .

Вижте следното изявление.

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

Опитайте го

Това, което се опита да направи изявлението, е да актуализира min_salary за позицията с идентификатор 2, която е разработчикът.

Първо, позицията с идентификатор 2 вече съществува, REPLACE изявление го премахва.

След това SQLite се опита да вмъкне нов ред с две колони:( id , min_salary ). Това обаче нарушава NOT NULL ограничение на заглавната колона. Следователно SQLite връща обратно транзакцията.

Ако title колоната няма NOT NULL ограничение, REPLACE оператор ще вмъкне нов ред, чиято заглавна колона е NULL .

В този урок ви показахме как да използвате SQLite REPLACE оператор за вмъкване или замяна на ред в таблица.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite JSON_PATCH()

  2. SQLiteOpenHelper:методът onCreate() не е извикан на физическо устройство

  3. Какво да избера - JSON или SQLite?

  4. Как да изтриете елементи от sqlite база данни с клас SQLiteOpenHelper

  5. SQLite Е NULL