Table com Check
Viva,
Preciso de criar uma tabela onde só se pode inserir uma entrada caso um atributo de uma coluna de uma outra tabela seja TRUE.
Eu tenho o seguinte:
create table socio(
nsocio integer,
nome char(1024),
bi char(256) not null unique,
email char(256),
nif char(256) not null unique,
telefone char(256),
honorario boolean,
primary key(nsocio));
e
create table ano_mandato(
nsocio integer CHECK(nsocio IN (SELECT nsocio FROM socio where honorario IS TRUE)),
ano smallint not null,primary key(nsocio, ano),
foreign key(nsocio) references socio(nsocio));
Mas obtenho o seguinte erro:
ERROR: cannot use subquery in check constraint
O que tou a fazer mal?
Preciso de criar uma tabela onde só se pode inserir uma entrada caso um atributo de uma coluna de uma outra tabela seja TRUE.
Eu tenho o seguinte:
create table socio(
nsocio integer,
nome char(1024),
bi char(256) not null unique,
email char(256),
nif char(256) not null unique,
telefone char(256),
honorario boolean,
primary key(nsocio));
e
create table ano_mandato(
nsocio integer CHECK(nsocio IN (SELECT nsocio FROM socio where honorario IS TRUE)),
ano smallint not null,primary key(nsocio, ano),
foreign key(nsocio) references socio(nsocio));
Mas obtenho o seguinte erro:
ERROR: cannot use subquery in check constraint
O que tou a fazer mal?
Bmrt82
Curtidas 0
Respostas
Danilo Passos
03/11/2008
Ao que parece, o postgres não permite que o check use um select. Eu recomendaria usar triggers para fazer a verificação que você deseja.
GOSTEI 0
Bmrt82
03/11/2008
[quote:ff139e82db=´Danilo Passos´]Ao que parece, o postgres não permite que o check use um select. Eu recomendaria usar triggers para fazer a verificação que você deseja.[/quote:ff139e82db]
Obrigado
Obrigado
GOSTEI 0
Bmrt82
03/11/2008
quote=´Danilo Passos´]Ao que parece, o postgres não permite que o check use um select. Eu recomendaria usar triggers para fazer a verificação que você deseja.
Alguém me pode ajudar na criação dessa trigger?
GOSTEI 0