|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre Expert
![]() Benoît Inscription : février 2003 Messages : 1 200 ![]() |
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
__________________
Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes |
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Tony Développeur .NET Inscription : novembre 2010 Messages : 570 ![]() |
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. |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Benoît Inscription : février 2003 Messages : 1 200 ![]() |
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
__________________
Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
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 +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
10
|
|
|
#5 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
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. @+
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
10
|
|
|
#6 |
|
Membre Expert
![]() Benoît Inscription : février 2003 Messages : 1 200 ![]() |
Merci
__________________
Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com