verificar se uma PK já existe em uma outra tabela do banco como FK
Como verificar se uma PK já existe em uma outra tabela do banco como FK.
Vou habilitar a edição apenas quando a PK ainda não foi utilizada.
Desde já agradeço...
Vou habilitar a edição apenas quando a PK ainda não foi utilizada.
Desde já agradeço...
Mario Jr
Curtidas 0
Respostas
Jothaz
19/12/2015
Sinceramente não entende o que você quer!
Como assim "habilitar a edição apenas quando a PK ainda não foi utilizada"?
Como assim "habilitar a edição apenas quando a PK ainda não foi utilizada"?
GOSTEI 0
Mario Jr
19/12/2015
Jothaz exemplo:
Só vou deixar editar um registro da tabela "produto" se este registro não foi utilizado ainda na tabela de "venda".
Só vou deixar editar um registro da tabela "produto" se este registro não foi utilizado ainda na tabela de "venda".
GOSTEI 0
Marcos P
19/12/2015
Qual Banco de dados ?
Você precisa de uma solução genérica ( a partir de qualquer tabela da base ) ou específica ( como no caso a colocou acima ) ?
Você precisa de uma solução genérica ( a partir de qualquer tabela da base ) ou específica ( como no caso a colocou acima ) ?
GOSTEI 0
Mario Jr
19/12/2015
Seria uma solução genérica.
Digamos por exemplo que a PK da tabela "Produto" seja a FK de varias tabelas. Ou seja não posso fazer "Select VendaId FROM Venda WHERE ProdutoId = Id" ... Entende....
Preciso de uma solução que verifique se o ProdutoId existe em varias tabelas.
Atenciosamente.
Digamos por exemplo que a PK da tabela "Produto" seja a FK de varias tabelas. Ou seja não posso fazer "Select VendaId FROM Venda WHERE ProdutoId = Id" ... Entende....
Preciso de uma solução que verifique se o ProdutoId existe em varias tabelas.
Atenciosamente.
GOSTEI 0
Marcos P
19/12/2015
Qual banco ?
GOSTEI 0
Mario Jr
19/12/2015
Sql Server
GOSTEI 0
Marcos P
19/12/2015
Vou preparar algo e retorno na sequencia...
Ok ?!?
Ok ?!?
GOSTEI 0
Marcos P
19/12/2015
Assumindo que o controle de integridade referencial é feito do lado do banco de dados (via relações x constraints ), podemos fazer :
Não testei com chaves primárias compostas, mas acredito que deva funcionar...
Ok ?!?
declare @NomeTabelaPK varchar(50) SET @NomeTabelaPK = 'Employees' --<<< indique AQUI o nome da tabela set nocount on declare @IDTabelaPK_rkeyid bigint set @IDTabelaPK_rkeyid = (select id from sysobjects where xtype = 'U' and name = @NomeTabelaPK) print 'Tabela PK ( Nome ): ' + @NomeTabelaPK print '-------------------------------------------------------------------------------------------------------------------------------------------------------' if (@IDTabelaPK_rkeyid is not null) begin print '' print 'Chaves estrangeiras relacionadas à chave primária da tabela' select substring(colPK.Name,1,50) as ColunaPK, substring(tabFK.Name,1,50) as TabelaFK, substring(colFK.Name,1,50) as ColunaFK from sysforeignkeys FK inner join syscolumns colPK on (colPK.id = FK.rkeyid and colPK.colid = FK.rkey) inner join sysobjects tabFK on (tabFK.id = FK.fkeyid) inner join syscolumns colFK on (colFK.id = FK.fkeyid and colFK.colid = FK.fkey) where FK.rkeyid = @IDTabelaPK_rkeyid end else print '> Tabela não existe... Processo Finalizado !' set nocount off
Não testei com chaves primárias compostas, mas acredito que deva funcionar...
Ok ?!?
GOSTEI 0
Mario Jr
19/12/2015
Ok. Obrigado pelo retorno...
GOSTEI 0