Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Onde posso declarar CASCADE e RESTRICT?

Pegando o exemplos utilizado pelo instrutor em que temos tabelas com aluno, curso e uma tabela que com uma FOREIGN KEY aluno_curso, onde devemos declarar o CASCADE e RESTRICT? Apenas na tabela com a FOREIGN KEY?

Pergunto pois esse exercício do telefone não ficou muito claro pra mim, como a table pessoa não conta com um UPDATE CASCADE, pensei que não seria possível fazer esse update.

CREATE TABLE pessoas (
    id INTEGER PRIMARY KEY,
    nome VARCHAR(255) NOT NULL
);
CREATE TABLE telefones (
    id INTEGER PRIMARY KEY,
    pessoa_id INTEGER,
    numero VARCHAR(15) NOT NULL,
    FOREIGN KEY (pessoa_id) REFERENCES pessoas (id)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
);
1 resposta
solução!

Boa noite Guilherme!

Também tive essa mesma dúvida no ínicio, espero que essa explicação possa ajudar.

Nós declaramos o CASCADE e RESTRICT apenas nas tabelas filhas (as que possuem FOREIGN KEY), porque essas chaves estrangeiras estabelecem a relação entre as duas tabelas. Quando um registro é excluído ou atualizado na tabela pai (que possui a PRIMARY KEY), pode haver consequências para os registros na tabela filha (que possui a FOREIGN KEY).

Um bom exemplo, seria se uma tabela "pedidos" possui uma chave estrangeira para uma tabela "produtos", e você especifica ON DELETE CASCADE, quando um produto é excluído, todos os pedidos relacionados a esse produto também vão ser excluídos.

Já nas tabelas que possuem somente as PRIMARY KEY, não há relação com outras tabelas, então não há necessidade de especificar ON DELETE e ON UPDATE.