MCDBA Brasil    
13:21:48

 
 
MCDBA Brasil: Forums
 
 


 
  www.mcdbabrasil.com.br :: Exibir tópico - Relacionamento entre tabelas Negativo??
 FAQFAQ   PesquisarPesquisar   GruposGrupos   PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   LoginLogin 

Relacionamento entre tabelas Negativo??

 
Novo Tópico   Responder Mensagem    www.mcdbabrasil.com.br - Índice do Fórum -> Gerais
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
leonardo123
Usuário
Usuário


Registrado em: Oct 07, 2008
Mensagens: 37
Localização: Brasília - DF

MensagemEnviada: 18 Ago 2010 10:14    Assunto: Relacionamento entre tabelas Negativo?? Responder com Citação

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?

Existe isso no sql?

Abs,

Leonardo
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Estevaosql
Usuário
Usuário


Registrado em: Dec 22, 2008
Mensagens: 56
Localização: Recife/PE

MensagemEnviada: 18 Ago 2010 11:46    Assunto: Responder com Citação

Bom dia,

Como asssim relacionamento negativo (acredito que isso não exista), se entendi segue abaixo:

Você criar a tabela1 com ID,NOME,CAMPO1,CAMPO2 onde ID é PK (primary Key)(Não se repete)

Você poderá criar tabela2 com ID,ID1,CAMPO3,CAMPO4 onde ID é a FK da tabela 2 que busca o ID da tabela1

1-cria uma view com os campos desejados e insere os dados da view em determinada tabela

2-Cria uma trigger para validar e popular os dados da tabela 1 na tabela dois quando ocorrerem inserts, deletes e updates

3-Acessa o link abaixo que acredito poder te ajudar muito no tipo de validação que deseja.

http://www.devmedia.com.br/post-17624-Consistencia-dos-Dados-e-Constraints--SQL-Server-2005--Parte-3.html
_________________
Ivson Estevão
DBA


Editado pela última vez por Estevaosql em 18 Ago 2010 16:51, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar Email MSN Messenger
jmcirilo
Doutor no assunto
Doutor no assunto


Registrado em: Sep 23, 2009
Mensagens: 186
Localização: São José do Rio Preto/São Paulo

MensagemEnviada: 18 Ago 2010 14:32    Assunto: Responder com Citação

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

drop table tab1
drop table tab2
_________________

Jefferson M. Cirilo
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
leonardo123
Usuário
Usuário


Registrado em: Oct 07, 2008
Mensagens: 37
Localização: Brasília - DF

MensagemEnviada: 18 Ago 2010 16:36    Assunto: Responder com Citação

Presados Ivson e Jefferson,

Agradeço a resposta vai ajudar bastante.



Abs
Leonardo
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    www.mcdbabrasil.com.br - Índice do Fórum -> Gerais Todos os horários são GMT - 3 Hours
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.

Powered by phpBB 2.0.6 © 2001 phpBB Group
phpBB port v2.1 based on Tom Nitzschner's phpbb2.0.6 upgraded to phpBB 2.0.4 standalone was developed and tested by:
ArtificialIntel, ChatServ, mikem,
sixonetonoffun and Paul Laudanski (aka Zhen-Xjell).

Version 2.1 by Nuke Cops © 2003 http://www.nukecops.com

 
 


 
  Todas os logotipos e marcas registradas são de propriedade de seus respectivos donos.
Sistema de portais PHP-Nuke. Copyright © 2003. PHP-Nuke é um Software Livre liberado sob licença GNU/GPL.
Tempo para gerar esta página: 0.436 segundos