IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Transaction pour créer / copier et supprimer une table


Sujet :

Développement SQL Server

  1. #1
    Membre actif
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Points : 223
    Points
    223
    Par défaut Transaction pour créer / copier et supprimer une table
    Bonjour à tous,

    Voici ce que je souhaiterai faire:
    1. Commencer transaction
    2. Créer une table A
    3. Copier les données de la table B vers A
    4. supprimer la table B
    5. Terminer la transaction

    Ce que je veux c'est être certain que quand je DROP B je puisse le faire.
    Comment est ce que je fais 1 et 5 ? BEGIN TRANSACTION COMMIT TRANSACTION ?

    Question annexe:
    Quand je fais ça, est ce que ma tempdb va grossir ? Mon journal de transaction ?

    Bien à vous dans cette période TVTravail

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 770
    Points : 52 726
    Points
    52 726
    Billets dans le blog
    5
    Par défaut
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    -- 0 : bloc de code de gestion d'erreur
    BEGIN TRY
     
    -- 1. Commencer transaction
    BEGIN TRANSACTION;
     
    -- 2. Créer une table A / 3. Copier les données de la table B vers A
    SELECT *
    INTO   MaNouvelle Table
    FROM  MonAncienneTable;
     
    -- 4. supprimer la table B
    EXEC ('DROP MonAncienneTable');
     
    -- 5. Terminer la transaction
    COMMIT;
     
    END TRY
     
    -- 6 : en cas de problème annuler la transaction
    BEGIN CATCH
       IF XACT_STATE() <> 0
          ROLLBACK;
       THROW;
    END CATCH;
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre actif
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Points : 223
    Points
    223
    Par défaut
    Merci, ça semble fonctionner.
    Par contre, lorsque j'arrête brutalement le script dans SQLSM, j'ai l'impression qu'il n'arrive pas à faire le rollback.
    Du coup après j'ai des erreurs de verrous.
    Est ce qu'il y a une astuce pour rendre la main ?

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    bonjour,

    Dans le cas d'une transaction explicite, le rollback n'est pas implicite !

    A vous donc, dans la même fenêtre, de faire un rollback (ou un commit) si nécessaire.

  5. #5
    Membre actif
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Points : 223
    Points
    223
    Par défaut
    Ok merci pour le tuyau, en effet ça règle mon problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/03/2015, 09h15
  2. Réponses: 2
    Dernier message: 04/06/2009, 14h49
  3. Créer et Supprimer une table d'une base de données access2000.
    Par yannjoe dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 15/07/2007, 13h59
  4. message d'erreur pour supprimer une table
    Par marco361020 dans le forum Access
    Réponses: 4
    Dernier message: 22/11/2006, 17h22
  5. [MYSQL] Copier contenue d'une table vers...
    Par naseeb18 dans le forum Requêtes
    Réponses: 9
    Dernier message: 04/04/2004, 13h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo