Enviada: 18 Ago 2010 10:14 Assunto: Relacionamento entre tabelas Negativo??
Pessoal,
Estou com uma dúvida.
Existe a possibilidade de fazer um relacionamento (ou constraint) negativo entre tabelas, ou seja, quando um registro existe em uma tabela o mesmo código de chave não deixa ser criado em outra tabela?
Registrado em: Sep 23, 2009 Mensagens: 186 Localização: São José do Rio Preto/São Paulo
Enviada: 18 Ago 2010 14:32 Assunto:
Caro Leonardo,
Pelo que entendi, seu problema pode ser resolvido com TRIGGER, mas você terá um queda de performance, pois terá um evento a ser disparado em cada insert.
Teste o exemplo abaixo e veja se pode ajudar:
use SEU_BANCO
go
SET NOCOUNT ON
create table tab1 (cod1 int, nome1 varchar(30))
go
create table tab2 (cod2 int, nome2 varchar(30))
go
create trigger chk_tab2 on tab1
FOR INSERT
As
Declare @cod1 int
select @cod1=cod1 from inserted
If (select cod2 from tab2 where cod2=@cod1)>0
Begin
delete tab1 where cod1=@cod1
RAISERROR('Valor inválido!', 0, 1)
End
go
insert into tab1 (cod1, nome1) values (1, 'MCDBABRASIL') -- insere cod1 1
insert into tab1 (cod1, nome1) values (2, 'PAGINA 2') -- insere cod1 2
insert into tab2 (cod2, nome2) values (3, 'MCDBABRASIL') -- insere cod2 3 que não vai deixar inserir
insert into tab1 (cod1, nome1) values (3, 'TESTE 3') -- insere cod2 3 - vai apagar
select * from tab1
select * from tab2