Chaves primárias e estrangeiras

<< Click to Display Table of Contents >>

Navigation:  PostgreSQL > Básico >

Chaves primárias e estrangeiras

Previous pageReturn to chapter overviewNext page

Chave primária

CREATE TABLE tempo (codigo INTEGER PRIMARY KEY);

 

Mesma funcionalidade de:

CREATE TABLE tempo (codigo INTEGER NOT NULL UNIQUE);

 

Chave Estrangeira

CREATE TABLE situacao (codigo INTEGER PRIMARY KEY,tempo INTEGER REFERENCES tempo(codigo));

 

Mesma funcionalidade de:

CREATE TABLE situacao (codigo INTEGER PRIMARY KEY,tempo INTEGER REFERENCES tempo);

 

Isto porque a tabela tempo possui uma chave primária, assim a ligação da tabela situação com a tabela tempo é feita pela chave primária.

Cascade

CREATE TABLE situacao (codigo INTEGER PRIMARY KEY,tempo INTEGER REFERENCES tempo ON DELETE CASCADE);

 

 

Muito cuidado com isso, pois desta forma ao ser apagado um registro da tabela tempo que tenha ligação com a tabela situação, todos os registro da tabela situação serão apagados juntos.

Bloqueando exclusões em cascade

CREATE TABLE situacao (codigo INTEGER PRIMARY KEY,tempo INTEGER REFERENCES tempo ON DELETE RESTRICT);

 

 

Isso impede que sejam apagados dados da tabela tempo que tenha ligação com a tabela situação.

Outros bloqueios de exclusões em cascade

CREATE TABLE situacao (codigo INTEGER PRIMARY KEY,tempo INTEGER REFERENCES tempo ON DELETE NO ACTION);

Gera um erro.

CREATE TABLE situacao (codigo INTEGER PRIMARY KEY,tempo INTEGER REFERENCES tempo ON DELETE SET DEFAULT);

Muda o valor da coluna referenciada para um valor padrão definido;

 

CREATE TABLE situacao (codigo INTEGER PRIMARY KEY,tempo INTEGER REFERENCES tempo ON DELETE SET NULL);

Muda o valor da coluna referenciada para um null;