De acordo com a sua documentação oficial, PostgreSQL é um sistema de gerenciamento de banco de dados relacional de objeto (SGBDRO ou ORDBMS - em inglês) de código aberto suporta grande parte do padrão SQL (Structured Query Language, ou Linguagem de Consulta Estruturada, em português) e oferece muitos recursos modernos. Observe e analise o código a seguir:
1: CREATE TABLE public.veiculo
2: (
3: placa character(7),
4: marca character varying(50),
5: modelo character varying(50),
6: CONSTRAINT veiculo_pk PRIMARY KEY (placa)
7: );
8:
9: CREATE TABLE public.concessionaria
10: (
11: cnpj character(14),
12: nome_fantazia character varying(50),
13: CONSTRAINT concessionaria_pk PRIMARY KEY (cnpj)
14: );
15:
16: CREATE TABLE public.concessionaria_veiculo
17: (
18: concessionaria character(14),
19: veiculo character(7),
20: CONSTRAINT concessionaria_veiculo_pk PRIMARY KEY (concessionaria, veiculo),
21: CONSTRAINT concessionaria_fk FOREIGN KEY (concessionaria)
22: REFERENCES public.concessionaria (cnpj) MATCH SIMPLE
23: ON UPDATE NO ACTION
24: ON DELETE CASCADE
25: NOT VALID,
26: CONSTRAINT veiculo_fk FOREIGN KEY (veiculo)
27: REFERENCES public.veiculo (placa) MATCH SIMPLE
28: ON UPDATE NO ACTION
29: ON DELETE CASCADE
30: NOT VALID
31: );
32:
33: INSERT INTO public.veiculo(placa, marca, modelo) VALUES (‘AAA0000’, ‘FIAT’, ‘ARGO’);
34: INSERT INTO public.veiculo(placa, marca, modelo) VALUES (‘BBB1111’, ‘FIAT’, ‘TORO’);
35: INSERT INTO public.veiculo(placa, marca, modelo) VALUES (‘CCC2222’, ‘GM’, ‘ONIX’);
36: INSERT INTO public.veiculo(placa, marca, modelo) VALUES (‘DDD3333’, ‘VW’, ‘T-CROSS’);
37:
38: INSERT INTO public.concessionaria(cnpj, nome_fantazia) VALUES (‘00000000000000’, ‘CAR MAX’);
39: INSERT INTO public.concessionaria(cnpj, nome_fantazia) VALUES (‘11111111111111’, ‘JR AUTOMOVEIS’);
40:
41: INSERT INTO public.concessionaria_veiculo(concessionaria, veiculo) VALUES (‘00000000000000’, ‘AAA0000’);
42: INSERT INTO public.concessionaria_veiculo(concessionaria, veiculo) VALUES (‘00000000000000’, ‘DDD3333’);
43: INSERT INTO public.concessionaria_veiculo(concessionaria, veiculo) VALUES (‘11111111111111’, ‘CCC2222’);
44: INSERT INTO public.concessionaria_veiculo(concessionaria, veiculo) VALUES (‘11111111111111’, ‘BBB1111’);
45:
46: DELETE FROM public.concessionaria WHERE cnpj = ‘11111111111111’;
Após ter executado com sucesso os comandos de CREATE e INSERT, ao tentar executar o trecho do código do comando DELETE conforme apresentado, o PostgreSQL:
vai manter os registros relacionados ao CNPJ 11111111111111 nas tabelas concessionaria e concessionaria_veiculo.
vai excluir os registros relacionados ao CNPJ 11111111111111 na tabela concessionaria e vai manter os registros na tabela concessionaria_veiculo, também relacionados ao CNPJ 11111111111111.
vai excluir os registros relacionados ao CNPJ 11111111111111 na tabela concessionaria_veiculo e vai manter os registros, na tabela concessionaria, também relacionados ao CNPJ 11111111111111.
vai manter os registros relacionados ao CNPJ 11111111111111 na tabela concessionaria e vai excluir os registros na tabela concessionaria_veiculo, também relacionados ao CNPJ 11111111111111.
vai excluir os registros relacionados ao CNPJ 11111111111111 nas tabelas concessionaria e concessionaria_veiculo.