SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Instrukcja REPLACE SQLite

Podsumowanie :w tym samouczku dowiesz się, jak używać SQLite REPLACE oświadczenie, aby wstawić lub zastąpić istniejący wiersz w tabeli.

Wprowadzenie do SQLite REPLACE oświadczenie

Idea REPLACE oświadczenie jest takie, że gdy UNIQUE lub PRIMARY KEY nastąpi naruszenie ograniczenia, działa w następujący sposób:

  • Najpierw usuń istniejący wiersz, który powoduje naruszenie ograniczenia.
  • Po drugie, wstaw nowy wiersz.

W drugim kroku, jeśli jakiekolwiek naruszenie ograniczenia, np. NOT NULL wystąpi ograniczenie, REPLACE oświadczenie spowoduje przerwanie akcji i wycofanie transakcji.

Poniższe ilustruje składnię REPLACE oświadczenie.

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

Lub w krótkiej formie:

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

Rzućmy okiem na kilka przykładów użycia SQLite REPLACE oświadczenie, aby zrozumieć, jak to działa.

SQLite REPLACE przykłady wypowiedzi

Najpierw utwórz nową tabelę o nazwie positions o następującej strukturze.

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

Wypróbuj

Po drugie, wstaw kilka wierszy w positions tabela.

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

Wypróbuj

Po trzecie, zweryfikuj wstawkę za pomocą następującego SELECT oświadczenie.

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

Wypróbuj

Poniższa instrukcja tworzy unikalny indeks w title kolumna positions tabeli, aby upewnić się, że nie ma zduplikowanego tytułu pozycji:

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

Wypróbuj

Załóżmy, że chcesz dodać pozycję do positions tabela, jeśli nie istnieje, jeśli pozycja istnieje, zaktualizuj bieżącą.

Następujący REPLACE instrukcja wstawia nowy wiersz w positions tabeli, ponieważ tytuł pozycji Full Stack Developer nie znajduje się w positions tabela.

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

Wypróbuj

Możesz zweryfikować REPLACE operacja za pomocą SELECT oświadczenie.

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

Wypróbuj

Zobacz następujące oświadczenie.

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

Wypróbuj

Najpierw SQLite sprawdził UNIQUE ograniczenie.

Po drugie, ponieważ to stwierdzenie naruszyło UNIQUE ograniczenie, próbując dodać DBA tytuł, który już istnieje, SQLite usunął istniejący wiersz.

Po trzecie, SQLite wstawił nowy wiersz z danymi dostarczonymi przez REPLACE oświadczenie.

Zauważ, że REPLACE oświadczenie oznacza INSERT lub REPLACE , a nie INSERT lub UPDATE .

Zobacz następujące oświadczenie.

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

Wypróbuj

To, co próbowała zrobić instrukcja, to zaktualizować min_salary dla pozycji o id 2, która jest deweloperem.

Po pierwsze, pozycja o id 2 już istnieje, REPLACE oświadczenie usuwa go.

Następnie SQLite próbował wstawić nowy wiersz z dwiema kolumnami:( id , min_salary ). Jednak narusza NOT NULL ograniczenie kolumny tytułowej. Dlatego SQLite wycofuje transakcję.

Jeśli title kolumna nie ma NOT NULL ograniczenie, REPLACE instrukcja wstawi nowy wiersz, którego tytuł kolumny to NULL .

W tym samouczku pokazaliśmy, jak używać SQLite REPLACE instrukcja wstawiania lub zastępowania wiersza w tabeli.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dołącz bazę danych w SQLite

  2. Wyświetl wszystkie indeksy w bazie danych SQLite

  3. Przechowywanie konfiguracji w Androidzie

  4. Dostrajanie wydajności SQLite

  5. Jak przechowywać zawartość wideo w bazie danych SQLite (nie w ścieżce wideo)