Bonjour!

Je n'arrive pas a faire un update sur une table dont la clé primaire est une chaine de caractère.
C'est cette même clé primaire que j'essaye de changer.
Voici ma manière de procéder:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
			String requete = "update dbo.ETABLISSEMENT_SCOLAIRE SET "
					+ "CIR_LIBEL='Inconnu'," + "COM_CODE= ?," + "QUA_CODE=?,"
					+ "ETB_LIBEL=?," + "ETB_BP=?," + "ETB_TEL=?,"
					+ "ETB_ANCREA=?," + "ETB_REFTER=?,"+ "ETB_CODE=?," + "ETB_DISCHEFL_COM=?"
					+ " where ETB_CODE=?";
			PreparedStatement stmt = connex.prepareStatement(requete);
			stmt.setInt(1, etb.getCommuneId());
			stmt.setString(2, etb.getSousLocalisationEtab());
			stmt.setString(3, etb.getNomEtab());
			stmt.setInt(4, etb.getBpEtab());
			stmt.setString(5, etb.getTelEtab());
			stmt.setInt(6, etb.getConstrAnneeEtab());
			stmt.setString(7, etb.getKbisEtab());
			stmt.setInt(8, etb.getDistChefEtab());
			stmt.setString(9, etb.getIdEtab()); // ici le nouveau code
			stmt.setString(10, oldCode); // ici l'ancien code
			stmt.executeUpdate();
J' obtient une erreur de type violation de contrainte sur la clé primaire alors qu'elle n'est pas en doublon dans la base:
Par exemple j ai une clé qui est '0000' et je la passe à '0002', il me donne l'erreur. Par contre j ai dand ma base une entrée qui a un id égal à '2' ( peut-être est-ce la source du problème?)
J'utilise SQL Server 2005 et le champ en question est de type char(4)

D'avance merci =)