Fórum verificar se uma PK já existe em uma outra tabela do banco como FK #540351
19/12/2015
0
Vou habilitar a edição apenas quando a PK ainda não foi utilizada.
Desde já agradeço...
Mario Jr
Curtir tópico
+ 0Posts
19/12/2015
Jothaz
Como assim "habilitar a edição apenas quando a PK ainda não foi utilizada"?
Gostei + 0
19/12/2015
Mario Jr
Só vou deixar editar um registro da tabela "produto" se este registro não foi utilizado ainda na tabela de "venda".
Gostei + 0
20/12/2015
Marcos P
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
20/12/2015
Mario Jr
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
20/12/2015
Marcos P
Gostei + 0
22/12/2015
Mario Jr
Gostei + 0
22/12/2015
Marcos P
Ok ?!?
Gostei + 0
28/12/2015
Marcos P
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
28/12/2015
Mario Jr
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)