Bonjour le forum,

J'ai actuellement un problème pour modifier une clé étrangère.
En effet, la clé étrangère était utilisée, je ne peux pas faire de modifications sur la clé primaire dans ma table1, puisqu'elle est utilisée en étrangère dans al table2, et je ne peux modifier la clé étrangère dans la table2, puisqu'elle n'existerais alors plus dans la table1.

exemple :
table1
Code
Intitulé

table2
ID
#Code

Pour autant que je me souvienne, le seul moyen de faire cette modification est l'utilisation d'une transaction, puisque, selon mes souvenirs, les contraintes d'intégrités ne sont vérifiées que lors du commit.
J'ai donc réalisé le code suivant :
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
Using cn2 As OleDbConnection = New OleDbConnection(My.MySettings.Default.ConnectionString)
cn2.Open()
    Using Transaction As OleDbTransaction = cn2.BeginTransaction()
         Using Cmd2 As OleDbCommand = cn2.CreateCommand()
             Cmd2.Transaction = Transaction
             Cmd2.CommandText = "UPDATE table2 set code=? where code=?"
             Cmd2.Parameters.Add(paramCode)
             Cmd2.Parameters.Add(paramCode2)
             Cmd2.ExecuteNonQuery()
             Cmd2.CommandText = "UPDATE table1 set code=? where code=?"
             Cmd2.ExecuteNonQuery()
             Transaction.Commit()
         End Using
     End Using
cn2.Close()
End Using
Cependant j'ai lors du premier ExecuteNonQuery, une erreur de clé étrangère.
Est-ce que je me rappel mal ? si oui, avez-vous une autre méthode pour faire ce changement ? Autrement est-ce une option à faire passer à la transaction...

Merci d'avance pour votre aide.