Commandes DDL sont AutoCommit dans SQL server, ça veut dire quoi?
à la plupart des pages que j'ai lu "les commandes DDL ont AutoCommit dans SQL Server", si je ne me trompe pas cette déclaration signifie simplement que nous n'avons pas besoin explicite de commettre de commande pour les commandes DDL.
alors pourquoi...
1) Alter TABLE EMP Ajouter Âge INT;
UPDATE EMP SET Age=20;
échoue ,en disant: nom de colonne non Valide 'Age'
2) BEGIN TRAN
Alter TABLE EMP Ajouter Âge INT;
RESTAURATION
peut être rollbacked avec succès.
Peut-être que je suis mal avec le concept de Validation, veuillez l'expliquer avec un exemple où il actully a des effets.
Merci pour toute aide.
Votre premier exemple montre que les lots sont entièrement compilé avant d'être exécuté. Il n'a rien à voir avec "autocommit" - et quelles sont les ressources que vous de référencement qui font de cette déclaration?
k puis mon premier exemple est en relation avec les lots, désolé, j'étais en rapport avec AutoCommit. Mais pouvez-vous me comprendre "les commandes DDL sont AutoCommit", avec un exemple, qu'est-ce que ça signifie?
Je ne sais pas où vous avez obtenu le membre de phrase "les commandes DDL sont AutoCommit" de l' - il ne fait pas beaucoup de sens pour moi, depuis la Validation automatique est un mode de transaction (par comparaison avec les Implicites et Explicites des transactions).
k puis mon premier exemple est en relation avec les lots, désolé, j'étais en rapport avec AutoCommit. Mais pouvez-vous me comprendre "les commandes DDL sont AutoCommit", avec un exemple, qu'est-ce que ça signifie?
Je ne sais pas où vous avez obtenu le membre de phrase "les commandes DDL sont AutoCommit" de l' - il ne fait pas beaucoup de sens pour moi, depuis la Validation automatique est un mode de transaction (par comparaison avec les Implicites et Explicites des transactions).
OriginalL'auteur user369182 | 2012-07-09
Vous devez vous connecter pour publier un commentaire.
Transactions En Mode Autocommit:
Donc, votre deuxième exemple ne s'applique pas. Plus bas:
Qui est ce que votre premier exemple traite.
Donc, ni une, est en fait traiter avec des transactions en mode Autocommit.
Donc, permet de prendre une instruction comme:
Si vous avez une connexion ouverte en mode Autocommit, exécuter ci-dessus, et il se termine sans erreur, alors vous trouverez que cette connexion n'a pas ouvert les transactions, et les modifications sont visibles de toute autre connexion immédiatement.
Si vous avez une connexion ouverte dans les Transactions Implicites mode, exécution de la ci-dessus, et il se termine sans erreur, alors vous trouverez que cette connexion a une transaction. Les autres connexions sont bloquées sur toutes les opérations qui nécessitent un schéma de verrouillage sur
EMP
, jusqu'à ce que vous exécuterCOMMIT
ouROLLBACK
.Si vous avez une connexion ouverte, dans laquelle vous avez exécuté
BEGIN TRANSACTION
, exécuter ci-dessus, et il se termine sans erreur, alors vous serez dans la même situation que pour les Transactions Implicites. Cependant, après avoirCOMMIT
ed ouROLLBACK
ed, votre connexion va revenir soit le mode de Validation automatique ou Implicite Transactions mode (qui était actif avant l'appel àBEGIN TRANSACTION
).aucune printemps à l'esprit. La page sur Transactions Implicites a une liste des états qui sont affectés par le choix de mode.
puis-je vous demander d'intégrer vos commentaires dans votre réponse? c'est à dire, de plomb "DDL n'a rien à voir avec validation automatique dans sql server". Le problème ici est que les transactions sont explicites dans oracle par défaut et DDL DE "validation automatique" de ces transactions explicites. Donc, quelqu'un qui cherche à voir si cela est également vrai dans sql server trouve cette réponse, et au premier coup d'œil croit que c'est vrai. Soit ça, ou l'on modifie la question de "qu'est-ce que autocommit dans sql server"
OriginalL'auteur Damien_The_Unbeliever
Si vous avez un begin tran explicitement comme dans ton deuxième exemple, alors vous avez un à la commettre. (vous pouvez revenir en tant que bien)
Si vous n'avez pas le spécifier explicitement comme dans votre premier exemple, alors il est autocommit.
autocommit est le mode par défaut de sql server, qui peut être désactivé si exigé
OriginalL'auteur Joe G Joseph
Si vous ajoutez lot dans votre code, il va travailler
OriginalL'auteur sganesh