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 :

Drop table avant create


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Femme Profil pro
    PL/SQL
    Inscrit en
    Septembre 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : Arabie Saoudite

    Informations professionnelles :
    Activité : PL/SQL
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 190
    Par défaut Drop table avant create
    bonjour a tous

    Qui peut m'expliquer pourquoi j'ai toujours un pb de creation du table temporaire malgré que j'ai fait un test d’existence dans ma requête

    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
    26
    27
    28
    29
    30
     
     
    USE tempdb
    IF OBJECT_ID('#Integration_CONTRAT_EMISSION_Bulk2', 'U') IS NOT NULL
    DROP TABLE dbo.#Integration_CONTRAT_EMISSION_Bulk2;
    GO
    --DROP TABLE #Integration_CONTRAT_EMISSION_Bulk2
    create table  #Integration_CONTRAT_EMISSION_Bulk2
    (	[id] [nvarchar](512) NULL,
    	[code_emission] [nvarchar](512) NULL,
    	[num_aliment] [nvarchar](512) NULL,
    	[num_piece] [nvarchar](512) NULL,
    	[n_ctg] [nvarchar](512) NULL,
    	[d_creation] [nvarchar](512) NULL,
    	[auteur] [nvarchar](512) NULL,
    	[d_debut_comptable] [nvarchar](512) NULL,
    	[d_debut_p] [nvarchar](512) NULL,
    	[d_fin_p] [nvarchar](512) NULL,
    	[v_tarif] [nvarchar](512) NULL,
    	[p_ht] [nvarchar](512) NULL,
    	[taxes] [nvarchar](512) NULL,
    	[fca] [nvarchar](512) NULL,
    	[p_ttc] [nvarchar](512) NULL,
    	[tx_cie] [nvarchar](512) NULL,
    	[tx_app] [nvarchar](512) NULL,
    	[fca_app] [nvarchar](512) NULL,
    	[annule] [nvarchar](512) NULL,
    	[d_effective] [nvarchar](512) NULL,
    	[etat] [nvarchar](512) NULL
    	)
    Erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg*2714, Niveau*16, État*6, Ligne*9
    Il existe déjà un objet nommé '#Integration_CONTRAT_EMISSION_Bulk2' dans la base de données.
    merci pour vos aides
    Images attachées Images attachées  

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 610
    Billets dans le blog
    10
    Par défaut
    bonjour,

    L'existence d'une table n'a rien à voir avec le marquage "NULL" d'un identifiant.

    si vous voulez conditionner le DROPà l'existence de la table alors, il faut utiliser la syntaxe IF EXISTS.

    cf. https://docs.microsoft.com/fr-fr/sql...l-server-ver15

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 999
    Billets dans le blog
    6
    Par défaut
    Plusieurs erreurs dans votre script...
    1) OBJECT_ID n'est utilisable que dans la base courante, or les tables temporaires sont créées dans la base tempdb.
    donc :
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT OBJECT_ID('dbo.#T')
    Renverra toujours NULL

    En revanche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT OBJECT_ID('tempdb.dbo.#T')
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT OBJECT_ID('tempdb..#T')
    Vous renverra bien l'ID...

    les bases de données relationnelles nécessite un typage fort et édéquate... Pouyrquoi du VARCHAR(512) partout ?
    Et surtout pourquoi du VARCHAR pour un ID, une date, un prix un booléen ???

    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/ * * * * *

Discussions similaires

  1. [2014] grant drop table create table
    Par davidjo_20165 dans le forum Administration
    Réponses: 1
    Dernier message: 17/09/2017, 23h33
  2. Grant DROP TABLE mais pas CREATE DATABASE..
    Par Rownlin dans le forum Administration
    Réponses: 0
    Dernier message: 29/02/2012, 18h03
  3. Drop Table ; Create Table
    Par monoar dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 23/07/2007, 14h57
  4. drop avant create table ?
    Par ]matmat[ dans le forum SQL
    Réponses: 5
    Dernier message: 28/08/2006, 21h27
  5. Réponses: 1
    Dernier message: 14/11/2005, 16h51

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