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 :

Copier une table exactement (avec contraintes)


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 67
    Par défaut Copier une table exactement (avec contraintes)
    Bonjour,

    J'aimerais savoir si on peut copier une table avec ses contraintes en une seule requête. SELECT INTO ne copie pas les contraintes et je ne peux pas faire de INSERT INTO ... SELECT puisque la table cible n'existe pas encore.
    Et je ne connais pas à l'avance la structure de la table, donc, je ne peux pas faire un CREATE TABLE "à la main" (ni un alter table "à la main")

    J'appelle contrainte tout ce qui est clés primaires, clés étrangères, etc...

    Merci par avance ^^

  2. #2
    Membre chevronné Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Par défaut
    Bonjour,

    Je ne crois pas que ça soit inclu en standard, mais un script qui peut servir de base de départ: sp_ScriptTable

    J'espère que cela vous aidera.

    @+

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Vous pouvez jeter un œil à la procédure stockée que j'ai écrite à ce sujet

    @++

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 67
    Par défaut
    Merci beaucoup pour vos réponses très rapides et excusez moi pour le retard de la mienne (j'ai été très occupé )

    Cependant, j'aurais encore une petite question pour modifier la procédure et, ainsi, la rendre parfaite pour l'utilisation que je veux en faire.

    En effet, j'aimerais pouvoir copier une table d'une autre base de données (une base de données ne contenant pas la procédure qui effectue la copie), or, si la table ne se trouve pas dans la base dans laquelle est la procédure, ça ne marche pas (la procédure ne trouve pas la table).

    Pour "réparer" cela, j'aimerais faire le lien entre la table et sa base (et ajouter un paramètre qui serait la base ^^)
    J'ai réussi à afficher la base grâce à un select dans sys.database mais il n'y a aucun champ qui ne correspond avec les vues sys.columns ou sys.objects (ni avec les tables systèmes correspondantes)

    Je répète donc, j'aimerais savoir comment faire le lien entre la table et la base qui la contient.

    Merci d'avance pour vos réponses.

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Cela n'est pas possible puisqu'il existe un schéma sys par base de données.
    C'est ce qui explique qu'il n'y a pas database_id dans les vues sys.objects.

    Si vous voulez vous assurer de l'appartenance d'un objet à une base de données, vous devez qualifier toute vue du schéma sys par le nom de la base de données ...

    @++

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 67
    Par défaut
    Merci beaucoup à tous les deux, surtout elsuket. J'ai réussi à faire exactement ce que je voulais grâce à vos aides.

    Merci énormément =)

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

Discussions similaires

  1. [AC-2007] Copier une table mais avec en + la date/heure du jour
    Par tibofo dans le forum VBA Access
    Réponses: 3
    Dernier message: 17/12/2009, 07h42
  2. Copier une table avec IDENTITY_INSERT
    Par [DreaMs] dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 07/11/2007, 15h53
  3. Copier une table vers une autre et classer avec PHP
    Par Alexandrebox dans le forum Débuter
    Réponses: 12
    Dernier message: 30/01/2007, 09h01
  4. [MySQL] Copier une table vers une autre et classer avec PHP
    Par Alexandrebox dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 29/01/2007, 18h38
  5. Réponses: 2
    Dernier message: 08/01/2007, 19h36

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