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 :
Cependant j'ai lors du premier ExecuteNonQuery, une erreur de clé étrangère.
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
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.
Partager