SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Restrição SQLite NOT NULL


Resumo :neste tutorial, você aprenderá como usar o SQLite NOT NULL restrição para garantir que os valores em uma coluna não sejam NULL .

Introdução ao SQLite NOT NULL restrição


Ao criar uma tabela, você pode especificar se uma coluna aceitaNULL valores ou não. Por padrão, todas as colunas em uma tabela aceitam NULL valores exceto que você usa explicitamente NOT NULL restrições.

Para definir um NOT NULL restrição para uma coluna, você usa a seguinte sintaxe:
CREATE TABLE table_name (
    ...,
    column_name type_name NOT NULL,
    ...
);
Code language: SQL (Structured Query Language) (sql)

Ao contrário de outras restrições, como PRIMARY KEY e CHECK , você só pode definir NOT NULL restrições no nível da coluna, não no nível da tabela.

Baseado no padrão SQL, PRIMARY KEY deve sempre implicar NOT NULL . No entanto, o SQLite permite NULL valores na PRIMARY KEY coluna exceto que uma coluna é INTEGER PRIMARY KEY coluna ou a tabela é um WITHOUT ROWID tabela ou a coluna é definida como um NOT NULL coluna.

Isso se deve a um bug em algumas versões anteriores. Se esse bug for corrigido para estar em conformidade com o padrão SQL, ele poderá quebrar os sistemas legados. Portanto, foi decidido permitir NULL valores na PRIMARY KEY coluna.

Uma vez que um NOT NULL restrição é anexada a uma coluna, qualquer tentativa de definir o valor da coluna para NULL como inserir ou atualizar causará uma violação de restrição.

SQLite NOT NULL exemplo de restrição


O exemplo a seguir cria uma nova tabela chamada suppliers :
CREATE TABLE suppliers(
    supplier_id INTEGER PRIMARY KEY,
    name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)

Neste exemplo, o supplier_id é a PRIMARY KEY coluna dos suppliers tabela. Porque esta coluna é declarada como INTEGER PRIMARY KEY , ele não aceitará NULL valores.

O name coluna também é declarada com um NOT NULL restrição, portanto, aceitará apenas valores não NULL.

A instrução a seguir tenta inserir um NULL no name coluna dos suppliers tabela:
INSERT INTO suppliers(name)
VALUES(NULL);
Code language: SQL (Structured Query Language) (sql)

A instrução falha devido ao NOT NULL violação de restrição. Aqui está a mensagem de erro:
SQL Error [19]: [SQLITE_CONSTRAINT]  Abort due to constraint violation (NOT NULL constraint failed: suppliers.name)Code language: CSS (css)

Neste tutorial, você aprendeu como usar SQLite NOT NULL restrição para garantir que os valores em uma coluna não sejam NULL.