Artigo SQL magazine 31 - Tutorial SQL: Constraints

Este artigo aborda uma variedade de constraints.

Clique aqui para ler esse artigo em PDF.

 

 

Clique aqui para ler todos os artigos desta edição

 

Tutorial SQL: Constraints

 

Constraints (restrições) mantém os dados do usuário restritos, e assim evitam que dados inválidos sejam inseridos no banco. A mera definição do tipo de dado para uma coluna é por si só um constraint. Por exemplo, uma coluna de tipo DATE restringe o conteúdo da mesma para datas válidas.

Este artigo aborda uma variedade de constraints. Para isso, utilizaremos como SGBD para exemplificar a definição e uso de constraints o PostgreSQL (para saber mais sobre este SGBD, visite o site oficial do projeto em http://www.postgresql.org e o site oficial do projeto no Brasil em http://www.postgresql.org.br).

 

NOT NULL

 

A constraint NOT NULL impede que valores nulos sejam inseridos em uma coluna. A Listagem 1 mostra a criação de uma tabela com uma constraint NOT NULL.

A inserção de um valor NULL, ou um INSERT que fosse colocar NULL em col2, causaria uma falha do INSERT.

Como mostrado na Listagem 1, o UPDATE de um valor NULL também falha.

Na Listagem 2, adiciona-se um valor DEFAULT para col2. Esta adição permite que os INSERTs não especifiquem um valor para col2, pois caso não seja especificado um valor para col2, será considerado o valor DEFAULT na inserção.

 

UNIQUE

 

A constraint UNIQUE impede que valores duplicados sejam inseridos na coluna. É implementada criando-se um índice unívoco em uma coluna. Como mostrado na Listagem 3, o UNIQUE impede valores duplicados na coluna.

O CREATE TABLE exibe um nome de um índice unívoco criado. A Listagem 3 também mostra que valores nulos múltiplos podem ser inseridos em uma coluna UNIQUE.

 

Listagem 1. Criação de tabela com constraint NOT NULL em coluna.

test=> CREATE TABLE not_null_test (

test(> col1 INTEGER,

test(> col2 INTEGER NOT NULL

test(> );

CREATE

test=> INSERT INTO not_null_test

test-> VALUES (1, NULL);

ERROR: ExecAppend: Fail to add null value in not

null attribute col2

test=> INSERT INTO not_null_test (col1)

test-> VALUES (1);

ERROR: ExecAppend: Fail to add null value in not

null attribute col2

test=> INSERT INTO not_null_test VALUES (1, 1);

INSERT 174368 1

test=> UPDATE not_null_test SET col2 = NULL;

ERROR: ExecReplace: Fail to add null value in not

null attribute col2

" [...] continue lendo...

Artigos relacionados