Erro de dados duplicados

2 respostas
P

Estou tentando fazer esse update só que está dando erro.. e é para fazer o update, então não poderia dar erro de duplicado

UPDATE SIMCardDispositivo SET Dispositivo_Numero = 'A12345678', SIMCard_Numero = 89550504130008532222 
FROM Dispositivo 
WHERE SIMCardDispositivo.Dispositivo_Numero = Dispositivo.Numero 
AND SIMCardDispositivo.Dispositivo_Numero = 'A12345678'
Erro
ERRO:  duplicar valor da chave viola a restrição de unicidade "simcarddispositivo_pkey"
DETAIL:  Chave (simcard_numero)=(89550504130008532222)  existe.

********** Error **********

ERRO: duplicar valor da chave viola a restrição de unicidade "simcarddispositivo_pkey"
SQL state: 23505
Detail: Chave (simcard_numero)=(89550504130008532222)  existe.

2 Respostas

igor_ks

posta seu codigo de update, pq se vc fizer um update desse direto no banco, com certeza nao vai dar violacao de chave, é algo no seu codigo java

P

Eses são os Updates que utilizo... onde ta dando o erro é no A

// UPDATE A (SIMCARDDISP_DISPOSITIVO)
	private static final String SQL_SIMCARD_UPDATE_SIMCARDDISP_A = "UPDATE SIMCardDispositivo SET Dispositivo_Numero = (?::varchar), SIMCard_Numero = (?::varchar)::numeric FROM Dispositivo WHERE SIMCardDispositivo.Dispositivo_Numero = Dispositivo.Numero AND SIMCardDispositivo.Dispositivo_Numero = (?::varchar)";
	private static final String SQL_SIMCARD_UPDATE_DISP_A = "UPDATE Dispositivo SET Numero = (?::varchar), CodigoTecnologia = (?::integer), CodigoAPNConfigurada = (?::integer), ip = (?::varchar), porta = (?::integer), CodigoFonteDados = (?::integer), imei = (?::varchar)::numeric FROM SIMCardDispositivo	WHERE SIMCardDispositivo.Dispositivo_Numero = Dispositivo.Numero AND Dispositivo.Numero = (?::varchar)";

	// UPDATE B (SIMCARDDISP_SIMCARD)
	private static final String SQL_SIMCARD_UPDATE_SIMCARDDISP_B = "UPDATE SIMCardDispositivo SET Dispositivo_Numero = (?::varchar), SIMCard_Numero = (?::varchar)::numeric FROM Dispositivo WHERE SIMCardDispositivo.Dispositivo_Numero = Dispositivo.Numero AND SIMCardDispositivo.SIMCard_Numero = (?::varchar)::numeric";
	private static final String SQL_SIMCARD_UPDATE_DISP_B = "UPDATE Dispositivo SET Numero = (?::varchar), CodigoTecnologia = (?::integer), CodigoAPNConfigurada = (?::integer), ip = (?::varchar), porta = (?::integer), CodigoFonteDados = (?::integer), imei = (?::varchar)::numeric FROM SIMCardDispositivo	WHERE SIMCardDispositivo.Dispositivo_Numero = Dispositivo.Numero AND SIMCardDispositivo.SIMCard_Numero = (?::varchar)::numeric";

	// UPDATE C (SIMCARDDISP_SIMCARD E DISPOSITIVO)
	private static final String SQL_SIMCARD_UPDATE_SIMCARDDISP_C = "UPDATE SIMCardDispositivo SET Dispositivo_Numero = (?::varchar), SIMCard_Numero = (?::varchar)::numeric FROM Dispositivo WHERE SIMCardDispositivo.Dispositivo_Numero = Dispositivo.Numero AND SIMCardDispositivo.Dispositivo_Numero = (?::varchar) AND SIMCardDispositivo.SIMCard_Numero = (?::varchar)::numeric";
	private static final String SQL_SIMCARD_UPDATE_DISP_C = "UPDATE Dispositivo SET Numero = (?::varchar), CodigoTecnologia = (?::integer), CodigoAPNConfigurada = (?::integer), ip = (?::varchar), porta = (?::integer), CodigoFonteDados = (?::integer), imei = (?::varchar)::numeric FROM SIMCardDispositivo	WHERE SIMCardDispositivo.Dispositivo_Numero = Dispositivo.Numero AND SIMCardDispositivo.Dispositivo_Numero = (?::varchar) AND SIMCardDispositivo.SIMCard_Numero = (?::varchar)::numeric";
Criado 19 de outubro de 2012
Ultima resposta 19 de out. de 2012
Respostas 2
Participantes 2