SQLite Tutorial

  • Home
  • Views
  • Indexes
  • Triggers
  • Functions
    • Aggregate Functions
    • Date Functions
    • String Functions
    • Window Functions
  • Interfaces
    • SQLite Java
    • SQLite Node.js
    • SQLite PHP
    • SQLite Python
  • Try It
Home / SQLite Tutorial / SQLite REPLACE Statement

SQLite REPLACE Statement

Summary: in this tutorial, you will learn how to use the SQLite REPLACE statement to insert or replace the existing row in a table.

Introduction to the SQLite REPLACE statement

The idea of the REPLACE statement is that when a UNIQUE or PRIMARY KEY constraint violation occurs, the REPLACE statement:

  • First, delete the existing row that causes the constraint violation.
  • Second, insert a new row.

In the second step, if any constraint violation e.g., NOT NULL constraint occurs, the REPLACE statement will abort the insert and rollback the transaction.

The following illustrates the syntax of the REPLACE statement.

1
2
INSERT OR REPLACE INTO table(column_list)
VALUES(value_list);

Or in a shorter form:

1
2
REPLACE INTO table(column_list)
VALUES(value_list);

Let’s take a look at some examples of using the SQLite REPLACE statement to understand how it works.

The SQLite REPLACE statement examples

First, create a new table named positions with the following structure.

1
2
3
4
5
CREATE TABLE IF NOT EXISTS positions (
id integer PRIMARY KEY,
title text NOT NULL,
min_salary numeric
);

Try It

Second, insert some rows into the positions table.

1
2
3
4
INSERT INTO positions (title, min_salary)
VALUES ('DBA', 120000),
       ('Developer', 100000),
       ('Architect', 150000);

Try It

Third, verify the insert using the following SELECT statement.

1
2
3
4
SELECT
id,title,min_salary
FROM
positions;

Try It

SQLite REPLACE positions table

The following statement creates a unique index on the title column of the positions table to ensure that it doesn’t have any duplicate position title:

1
CREATE UNIQUE INDEX idx_positions_title ON positions (title);

Try It

Suppose, you want to add a position into the positions table if it does not exist, if the position exists, update the current one.

The following REPLACE statement inserts a new row into the positions table because the position title Full Stack Developer is not in the positions table.

1
2
3
REPLACE INTO positions (title, min_salary)
VALUES
('Full Stack Developer', 140000);

Try It

SQLite REPLACE insert new row

You can verify the REPLACE operation using the SELECT statement.

1
2
3
4
SELECT
id,title,min_salary
FROM
positions;

Try It

See the following statement.

1
2
3
REPLACE INTO positions (title, min_salary)
VALUES
('DBA', 170000);

Try It

SQLite REPLACE - replace the existing row

First, SQLite checked the UNIQUE constraint.

Second, because this statement violated the UNIQUE constraint by trying to add the DBA title that already exists, SQLite deleted the existing row.

Third, SQLite inserted a new row with the data provided by the REPLACE statement.

Notice that the REPLACE statement means INSERT or REPLACE, not INSERT or UPDATE.

See the following statement.

1
2
3
REPLACE INTO positions (id, min_salary)
VALUES
(2, 110000);

Try It

What the statement tried to do is to update the min_salary for the position with id 2, which is the developer.

First, the position already with id 2 already exists, the REPLACE statement removes it.

Then, SQLite tried to insert a new row with two columns: ( id, min_salary). However, it violates the NOT NULL constraint of the title column. Therefore, SQLite rollbacks the transaction.

If the title column does not have the NOT NULL constraint, the REPLACE statement will insert a new row whose the title column is NULL.

In this tutorial, we have shown you how to use the SQLite REPLACE statement to insert or replace a row in a table.

  • Was this tutorial helpful ?
  • Yes   No
Previous Tutorial: SQLite Delete
Next Tutorial: SQLite Transaction

Getting Started

  • What Is SQLite
  • Download & Install SQLite
  • SQLite Sample Database
  • SQLite Commands

SQLite Tutorial

  • SQLite Select
  • SQLite Order By
  • SQLite Select Distinct
  • SQLite Where
  • SQLite Limit
  • SQLite BETWEEN
  • SQLite IN
  • SQLite Like
  • SQLite GLOB
  • SQLite Left Join
  • SQLite Inner Join
  • SQLite Cross Join
  • SQLite Self-Join
  • SQLite Full Outer Join
  • SQLite Group By
  • SQLite Having
  • SQLite Union
  • SQLite Except
  • SQLite Intersect
  • SQLite Subquery
  • SQLite EXISTS
  • SQLite Case
  • SQLite Insert
  • SQLite Update
  • SQLite Delete
  • SQLite Replace
  • SQLite Transaction

SQLite Data Definition

  • SQLite Data Types
  • SQLite Date & Time
  • SQLite Create Table
  • SQLite Primary Key
  • SQLite Foreign Key
  • SQLite NOT NULL Constraint
  • SQLite UNIQUE Constraint
  • SQLite CHECK Constraint
  • SQLite AUTOINCREMENT
  • SQLite Alter Table
  • SQLite Drop Table
  • SQLite Create View
  • SQLite Index
  • SQLite Expression Based Index
  • SQLite Trigger
  • SQLite VACUUM
  • SQLite Transaction
  • SQLite Full-text Search

SQLite Tools

  • SQLite Commands
  • SQLite Show Tables
  • SQLite Describe Table
  • SQLite Dump
  • SQLite Import CSV
  • SQLite Export CSV

SQLite Functions

  • SQLite AVG
  • SQLite COUNT
  • SQLite MAX
  • SQLite MIN
  • SQLite SUM

SQLite Interfaces

  • SQLite PHP
  • SQLite Node.js
  • SQLite Java
  • SQLite Python

About SQLite Tutorial

SQLite Tutorial website helps you master SQLite quickly and easily. It explains the complex concepts in simple and easy-to-understand ways so that you can both understand SQLite fast and know how to apply it in your software development work more effectively.

Looking for a tutorial…

If you did not find the tutorial that you are looking for, you can use the following search box. In case the tutorial is not available, you can request for it using the request for a SQLite tutorial form.

Recent Tutorials

  • SQLite Window Frame
  • SQLite CUME_DIST
  • SQLite PERCENT_RANK
  • SQLite DENSE_RANK
  • SQLite NTILE
  • SQLite NTH_VALUE
  • SQLite LAST_VALUE
  • SQLite FIRST_VALUE

Site Links

  • Home
  • About
  • Contact
  • Resources
  • Privacy Policy

Copyright © 2019 SQLite Tutorial. All rights Reserved.

⤒