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

MS SQL Server Discussion :

Passer un champ autoincrémenté en non incrémenté


Sujet :

MS SQL Server

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut Passer un champ autoincrémenté en non incrémenté
    Bonjour,
    Comment passe-t-on un champ auto incrémenté en non incrémenté?
    Management studio recrée une table, ce qui me paraît lourd surtout que ma table est peuplée.
    Voilà la table actuelle
    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
    CREATE TABLE [dbo].[Dim_Time](
    	[TimeKey] [int] IDENTITY(1,1) NOT NULL,
    	[FullDateAlternateKey] [datetime] NOT NULL,
    	[DayNumberOfWeek] [tinyint] NULL,
    	[EnglishDayNameOfWeek] [nvarchar](10) NULL,
    	[SpanishDayNameOfWeek] [nvarchar](10) NULL,
    	[FrenchDayNameOfWeek] [nvarchar](10) NULL,
    	[DayNumberOfMonth] [tinyint] NULL,
    	[DayNumberOfYear] [smallint] NULL,
    	[WeekNumberOfYear] [tinyint] NULL,
    	[EnglishMonthName] [nvarchar](10) NULL,
    	[SpanishMonthName] [nvarchar](10) NULL,
    	[FrenchMonthName] [nvarchar](10) NULL,
    	[MonthNumberOfYear] [tinyint] NULL,
    	[CalendarQuarter] [tinyint] NULL,
    	[CalendarYear] [char](4) NULL,
    	[CalendarSemester] [tinyint] NULL,
    	[FiscalQuarter] [tinyint] NULL,
    	[FiscalYear] [char](4) NULL,
    	[FiscalSemester] [tinyint] NULL,
     CONSTRAINT [PK_Dim_Time] PRIMARY KEY CLUSTERED 
    (
    	[FullDateAlternateKey] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    Voilà ce que j'ai essayé et qui ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if exists (
    	SELECT *
    	FROM sys.TABLES AS T
    	JOIN sys.COLUMNS AS C
    		ON T.object_id = C.object_id
    	WHERE T.name = 'Dim_Time'
    	and c.name='TimeKey'
    	and  C.is_identity=1)
    begin 
    	print 'champ autoincrémenté'
     ALTER TABLE Dim_Time 
    	ALTER COLUMN TimeKey int NOT NULL;
    end
    Et quand j'execute le code plusieurs fois, j'obtiens
    'champ autoincrémenté' plusieurs fois.
    Avez vous une idée?
    PS : Je ne suis pas responsable de la structure de cette table. Elle est utilisée dans une dimension SSAS, et j'ai peur de tout casser en changeant sa structure de façon drastique
    Cordialement
    Soazig

  2. #2
    Membre actif
    Inscrit en
    Février 2009
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 224
    Points : 269
    Points
    269
    Par défaut
    Effectivement si des processus alimentent la table, ils s'atendent à ce type auto incrémenté.
    S'il s'agit pour vous d'insérer quelques valeurs sans prendre en compte ce type identity, je vous conseil d'opérer avec set identity_insert maTable ON ou OFF soit dans votre cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    set identity_insert [Dim_Time] on
    -- insérer les valeurs souhaitées dans votre table
    set identity_insert [Dim_Time] off

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Non il n'y a pas de processus existant qui alimentent la table.
    Je me suis rendue compte que le champ était auto incrémenté, quand j'ai voulu créer une procédure stockée d'alimentation de la dite table.

    Je ne sais pas bien comment la table a été alimentée initialement.
    Soazig

  4. #4
    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 : 43
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Malheureusement je crois que vous n'avez pas d'autre choix que celui de demander à SSMS de la faire pour vous.
    Vous pouvez le faire vous même mais cela revient à faire le travail que SSMS fait pour vous

    @++

Discussions similaires

  1. [MySQL] Champs autoincrémenté non numérique
    Par djsid dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 25/11/2009, 19h11
  2. Gérer l'incrément des champs autoincrément
    Par mayloshi dans le forum Modélisation
    Réponses: 3
    Dernier message: 20/09/2007, 00h10
  3. Réponses: 1
    Dernier message: 28/06/2005, 11h19
  4. [Quick Report] Valeur d'un champ existante mais non affichée
    Par navis84 dans le forum Bases de données
    Réponses: 1
    Dernier message: 31/03/2005, 09h15
  5. passer un champ en paramètre, c'est possible ??
    Par marie253 dans le forum Bases de données
    Réponses: 6
    Dernier message: 09/07/2004, 09h22

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