By Alvin Alexander. Last updated: June 22, 2024
SQLite FAQ: How do I create a UNIQUE constraint on multiple fields in a SQLite database table?
Just specify the unique constraint in your create table declaration, as shown here:
create table projects (
_id integer primary key autoincrement,
project_type text not null,
name text not null,
description text,
last_updated datetime default current_timestamp,
date_created datetime default current_timestamp,
unique (project_type, name)
);
In this case I’ve stated that the combination of the project_type and name fields must be unique. As a result this first SQL INSERT statement will work:
insert into projects (project_type, name, description)
values ('APPLICATION', 'ACME - Phase 1', 'ACME Project, Phase 1');
and this second INSERT attempt will fail:
insert into projects (project_type, name, description)
values ('APPLICATION', 'ACME - Phase 1', 'ACME Project, Phase 1 (this fails)');
On a related note, if you just want to add a UNIQUE constraint to one field in your table, you can use this syntax instead:
name text not null unique,
But to have a unique constraint on multiple fields, you need to use the syntax shown earlier:
unique (project_type, name)

