INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'FK_TBSICP_PLAQUETA_TBSICP_PATRIMONIO

4 respostas
EuclidesFilizola

Bom dia pessoal, estou tentando inserir uns dados no banco, porém ta me retornando esse erro:

String sql = "exec bdsicp.dbo.sp_incPatrimonio '"
					+ Util.dateToStrIng(patrimonio.getDt_Tombo()) + "','"
					+ patrimonio.getDs_Matricula() + "','"
					+ patrimonio.getCd_NotaFiscalBens() + "','"
					+ plaqueta.getCd_Plaqueta() + "','"
					+ patrimonio.getDs_Observacao() + "','"
					+ plaqueta.getCd_Proprietario()+ "','"
					+ movimentacao.getDs_MatriculaResp() + "'";

aqui está a procedure:

CREATE           procedure sp_incPatrimonio
(
@dt_Tombo datetime, -- dt_movimentaçãoEntrada
@ds_Matricula varchar(20),
@cd_NotaFiscalBens int,
@cd_plaqueta int,
@ds_obs text,
@cd_proprietario int,
@ds_MatriculaResp varchar(20),
@cd_patrimonio int
)
as

begin
declare @Erro int
declare @ErroMsg varchar(255)


set @Erro = 0
set @ErroMsg = ' '  	



  if not exists(Select * from BDSIFN.dbo.TBSIFN_NOTAFISCALBENS where cd_NotaFiscalBens = @cd_NotaFiscalBens)
        begin 
        	set @ErroMsg = @ErroMsg + 'Não existe um bem relacionado.'
		set @Erro = 1 
        end 
  
  if exists (Select * from TBSICP_PLAQUETA where cd_Plaqueta = @cd_plaqueta)
        begin
      		set @ErroMsg = @ErroMsg + 'Já existe uma plaqueta com o código inserido.'
      		set @Erro = 1 
        end 

    if exists (Select * from TBSICP_PATRIMONIO where cd_NotaFiscalBens = @cd_NotaFiscalBens)
        begin
      		set @ErroMsg = @ErroMsg + 'Patrimônio já cadastrado.'
      		set @Erro = 1 
        end 
   
  if (@Erro = 0) 
                begin 	    

                       

		INSERT INTO TBSICP_PATRIMONIO (dt_Tombo,dt_Cadastro,ds_Matricula,cd_NotaFiscalBens,ds_obs)
VALUES (@dt_Tombo,getdate(),@ds_Matricula,@cd_NotaFiscalBens,@ds_obs)

select @cd_patrimonio = @@identity

INSERT INTO TBSICP_PLAQUETA (cd_plaqueta,cd_Proprietario,cd_patrimonio)
VALUES (@cd_plaqueta,@cd_proprietario,@cd_patrimonio)


select ErroTitulo = 'Registro incluído com Sucesso.',
ErroMsg = 'Nenhum erro foi encontrado.' ,
ErroImg = 'OK.gif'

                     
       	    
                end 
    
  else

    select ErroTitulo = 'O Registro não pode ser Incluído.' ,
              ErroMsg = 'Erro(s) :' + @ErroMsg ,
              ErroImg = 'ico_atencao.gif' 

end

dae da o seguinte erro:

INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'FK_TBSICP_PLAQUETA_TBSICP_PATRIMONIO'. The conflict occurred in database 'BDSICP', table 'TBSICP_PATRIMONIO', column 'cd_Patrimonio'.
The statement has been terminated.

Alguém saberia me dizer o porquê ?

4 Respostas

g4j

ta dando conflito entre os dados. O que isso quer dizer?

cd_Patrimonio que você está querendo inserir não existe na tabela TBSICP_PATRIMONIO.

Dê uma verificada.

EuclidesFilizola

cd_patrimonio é auto increment. ! assim eu peguei esse código pronto. Mandaram eu ajeitar o codigo java. Porém, depois de analisar tudo, o problema não está no java e sim nessa procedure…

porém banco não é o meu forte… e então… peguei ela pronta… que já rodava nesse sistema…

dpois me avisaram que o sistema nunca tinha sido testado…

é mole ?

dae… agora eu não estou conseguindo inserir… utilizando essa procedure …

!!!

entendeu ?

leoramos

Pode estar relacionado à permissões do SQL Server, com relação à conta de usuário. Se a conta foi criada antes da constraint, o retardado do SQL Server (na versão 2005, e é um problema ‘intermitente’) não te permite gravação que esteja ligada à essa constraint. Se for o caso, apaga a conta de usuário e cria de novo com o mesmo nome e senha e mesmas permissões. Acredite: é cretino, mas funciona, já passei por isso.
Abraço!

EuclidesFilizola

Não posso fazer isso …

=(

Criado 18 de novembro de 2009
Ultima resposta 18 de nov. de 2009
Respostas 4
Participantes 3