-
Transaction ou pas?
Bonjour,
Enlevez moi un doute, si j'efface plusieurs records d'une même table avec une seule requete je n'ai pas besoin de transaction?
Exemple j'efface de la table Etudiant tous les étudiants inscris avant 2000
Les 5 premiers records ne posent pas de problème mais le 6ème a un problème d'intégrité qui m'empeche de l'éffacer
-
Ce n'est pas un problème de transaction.
Ton étudiant est probablement clé étrangère d'une autre table, et tu n'a pas du dire : "On delete cascade", du coup tu essayes de supprimer un étudiant qui est affecté, par exemple, à une classe.
C'est interdit puisque la classe possède cet étudiant, donc il ne peut oas être effacé avant d'être supprimé de la classe.
-
Non non ma question n'est pas pourquoi il y a une erreur mais de savoir si ca a une utilité de faire de faire une transaction pour un delete
J'ai récupéré du code, dans celui-ci
il commmence une transaction
Appelle une procedure qui efface les étudiant dont l'année d'inscription < @Annne
Clos la transaction
Pour moi la transaction ne sert à rien
-
Tout ordre SQL est par nature ensembliste. Si un élément de l'ensemble manipulé viole une contrainte ou part en erreur alors rien n'est effectué, quelque soit l'ordre SQL (SELECT, INSERT, UPDATE, DELETE, MERGE...).
Donc un ordre SQL est une transaction à part entière.
A +
-
Bonjour,
Sous SQL Server, toute requête est implicitement transactionnelle.
On peut par ailleurs créer des transactions explicites à l'aide de BEGIN TRANSACTION et ROLLBACK TRANSACTION, qui encadrent plusieurs requêtes.
Dans les deux cas, s'il l'une d'entre-elles échoue, quelle que soit la raison, alors la requête ou les requêtes dans la transaction explicite sont annulées.
Dans le cas de BenoitM où l'on n'a qu'une seule requête, la déclaration explicite de la transaction est inutile, même si je ne pense pas que cela nuise aux performances.
@+ ;)
-