Skip to content

Instantly share code, notes, and snippets.

@hevertonfreitas
Created March 29, 2017 18:00
Show Gist options
  • Save hevertonfreitas/d9fec406246a3911eb7bf30f09016d4a to your computer and use it in GitHub Desktop.
Save hevertonfreitas/d9fec406246a3911eb7bf30f09016d4a to your computer and use it in GitHub Desktop.
constraint para checar o tipo de uma pessoa
create temp table pessoa (tipo char(1), cpf int, cnpj int);
alter table pessoa add constraint pessoa_check check ( (tipo = 'f' and cpf is not null) <> (tipo = 'j' and cnpj is not null) and cpf is null <> cnpj is null);
insert into pessoa values ('f', 1, null); -- true
insert into pessoa values ('f', null, null); -- false
insert into pessoa values ('f', null, 1); -- false
insert into pessoa values ('j', null, 1); -- true
insert into pessoa values ('j', null, null); -- false
insert into pessoa values ('j', 1, null); -- false
insert into pessoa values ('f', 1, 1); -- false
insert into pessoa values ('j', 1, 1); -- false
create temp table pessoa (tipo char(1), cpf int, cnpj int);
alter table pessoa add constraint pessoa_check check ( (tipo = 'f' and cpf is not null) <> (tipo = 'j' and cnpj is not null) and cpf is null <> cnpj is null);
insert into pessoa values ('f', 1, null); -- true
insert into pessoa values ('f', null, null); -- false
insert into pessoa values ('f', null, 1); -- false
insert into pessoa values ('j', null, 1); -- true
insert into pessoa values ('j', null, null); -- false
insert into pessoa values ('j', 1, null); -- false
insert into pessoa values ('f', 1, 1); -- false
insert into pessoa values ('j', 1, 1); -- false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment