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 :

Problème avec SELECT INTO en SQLServer 2012


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Problème avec SELECT INTO en SQLServer 2012
    salut
    le problème c'est que a chaque fois que je crée une table a partir d'une autre avec SELECT INTO les valeurs par défaut indiqués pour certains champs a la création de la table source sont pas fonctionnel dans la nouvelle table.
    merci pour votre aide

  2. #2
    Expert éminent
    Bonjour,
    Sans la description des tables, et le texte de la requête, impossible de répondre.

    Tatayo.

  3. #3
    Futur Membre du Club
    Tatayou
    Création de la table source
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    CREATE TABLE stock (réf nvarchar(20),designation nvarcha(50),prix décimal (10.2) DEFAULT 0)


    dans cette table tout marche bien, on insérant la réf et designation la valeur prix prendra automatiquement un 0.
    Mais si je crée une autre table stock2 à partir de stock:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    SÉLECT * INTO stock2 FROM stock;

    on insérant la réf et designation dans la table stock2 la valeur prix prendra un NULL au lieu de 0

  4. #4
    Rédacteur

    Rien ne vous empêche de reproduire, après le SELECT ... INTO, les contraintes par défaut en lisant la vue INFORMATION_SCHEMA.COLUMNS et en utilisant une commande DDL pour ce faire....

    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  5. #5
    Futur Membre du Club
    SQLPRO
    Il y a une vingtaine de table. Et on plus j'essaie de standardiser mon application pas forcément avec sqlserver. Le client a le choix de SGBD entre Sqlserver, Firebird, msaccess, sqllite.
    Votre réponse je crois que elle est valable uniquement avec sqlserver.

  6. #6
    Expert éminent sénior
    Remplacez le SELECT * (bouh pas bien !) par la liste in extenso des colonnes, et, pour chaque colonne "nullable" utilisez COALESCE pour remplacer le marqueur "null" par la valeur souhaitée

  7. #7
    Rédacteur

    Autre solution créez des types tables et servez en pour créer vos tables.

    mais pourquoi autant de table à créer ? Un SGBD n'est pas un tableur !: je soupçonne une erreur de modélisation/structure de la base....

    Dites nous en plus... A quoi sert votre machin ?

    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  8. #8
    Futur Membre du Club
    Sqlpro
    C'est application de gestion commercial avec des tables:
    Listefactvente
    Listefactachat
    Listeclient
    Detailclient
    Listefournisseur
    Detailfournisseur
    Listeproduit
    Mouvement. (contien détail vente/achat)
    Commandeclient
    Commandefournisseur
    Etc...

    Mon objectif est à chaque fin d'année je clôture l'année N-1 pour ouvrir année N est reporter uniquement les soldes client/les soldes fournisseur ainsi que la liste des produits on lissant tout les détails comme archive dans une base de donnée séparé.
    Alors dans la nouvelle base de donnée j'utilise SELECT * INTO pour créer les tables listeclient/listefournissrur/Listeproduit avec leur soldes à partir de la base N-1

  9. #9
    Rédacteur

    Ce n'est donc pas la bonne méthode. La bonne est de partitionner tes tables sur la date par années et de stocker chaque partition dans un groupe de fichier à part. Lors de la clôture de l'exercice tu ferme la partition en la mettant en READ ONLY.

    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  10. #10
    Futur Membre du Club
    Sqlpro
    Je crois que Le partitionnement n'exist pas dans l'édition EXPRESS DE SQLSERVER.

  11. #11
    Rédacteur

    2012 est une édition qui n'est plus supportée. C'est stupide de ne pas migrer vers 2019.
    SQL Server 2019 Express permet le partitionnement.
    https://docs.microsoft.com/en-us/sql...l-server-ver15

    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  12. #12
    Futur Membre du Club
    Merci
    je vais essayer.