Restrição SQLite NOT NULL

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

NOT NULLIntrodução à restrição SQLite

Ao criar uma tabela , você pode especificar se uma coluna aceita NULLvalores ou não. Por padrão, todas as colunas de uma tabela aceitam NULLvalores, exceto se você usar restrições explicitamente NOT NULL.

Para definir uma NOT NULLrestrição para uma coluna, use a seguinte sintaxe:

CREATE TABLE table_name (
    ...,
    column_name type_name NOT NULL,
    ...
);
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

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

Baseado no padrão SQL, PRIMARY KEYdeve sempre implicar NOT NULL. No entanto, SQLite permite NULLvalores na PRIMARY KEYcoluna, exceto que uma coluna é INTEGER PRIMARY KEYuma coluna ou a tabela é uma WITHOUT ROWIDtabela ou a coluna é definida como uma NOT NULLcoluna.

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á danificar os sistemas legados. Portanto, foi decidido permitir NULLvalores na  PRIMARY KEYcoluna.

Depois que uma NOT NULLrestrição é anexada a uma coluna, qualquer tentativa de definir o valor da coluna NULLcomo inserção ou atualização causará uma violação da restrição.

NOT NULLExemplo de restrição SQLite

O exemplo a seguir cria uma nova tabela chamada suppliers:

CREATE TABLE suppliers(
    supplier_id INTEGER PRIMARY KEY,
    name TEXT NOT NULL
);
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Neste exemplo, the supplier_idé a PRIMARY KEYcoluna da supplierstabela. Como esta coluna é declarada como INTEGER PRIMARY KEY, ela não aceitará NULLvalores.

A namecoluna também é declarada com uma NOT NULLrestrição, portanto aceitará apenas valores não NULL.

A instrução a seguir tenta inserir a NULLna namecoluna da supplierstabela:

INSERT INTO suppliers(name)
VALUES(NULL);
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A instrução falha devido à NOT NULLviolação da restrição. Aqui está a mensagem de erro:

SQL Error [19]: [SQLITE_CONSTRAINT]  Abort due to constraint violation (NOT NULL constraint failed: suppliers.name)Linguagem de código:  CSS  ( css )

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

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *