Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/02/2011, 12h21   #1
Invité de passage
 
nadine alloba
Inscription : avril 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : nadine alloba

Informations forums :
Inscription : avril 2010
Messages : 3
Points : 0
Points : 0
Par défaut IDENTITY OPTION - SQL SERVER

Bonjour,

Surement que le sujet existe déjà mais je me perds un peu sur le forum. Donc j'ai tout bonnement crée une nouvelle discussion.
J'aimerais savoir s'il y a une possibilité de rajouter l'option identity à une colonne d'une table (définie à la base comme unique ) sans bien entendu utiliser une table temporaire pour stocker les données et recréer ma table en faisant un identity_insert.
ce serait vraiment génial pour quio pourrait me répondre.
En passant bon appétit à tous ceux qui sont en pause.

Cdt.
alloban est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2011, 10h28   #2
Membre éprouvé
 
Homme Hamid MIRA
Ingénieur développement logiciels
Inscription : septembre 2003
Messages : 177
Détails du profil
Informations personnelles :
Nom : Homme Hamid MIRA
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2003
Messages : 177
Points : 413
Points : 413
La réponse est Non. L'instruction T-SQL :
Code :
1
2
ALTER TABLE Produit ALTER COLUMN IdProduit INT NOT NULL IDENTITY(1,1) ; 
GO
ne permet pas de rajouter ni de supprimer la propriété IDENTITY à une colonne déjà existante. Vous obtiendrez systématiquement l'erreur ci-dessous :
Msg 156, Niveau 15, État 1, Ligne 1
Syntaxe incorrecte vers le mot clé 'identity'.

Soit la table Produit ci-dessous :
Code :
1
2
3
4
5
6
CREATE TABLE Produit( 
  IdProduit  INT NOT NULL, 
  Libelle    VARCHAR(60) NULL 
)
ON [PRIMARY]
GO
Pour ajouter la propriété IDENTITY à colonne déjà existante IdProduit procédez comme suit :
1 - Supprimez, le cas échéant, tous les objets liés à la colonne IdProduit : Clés étrangères (Foreign Keys) , clé primaire (Primary Key), Indexes etc..
2 - Déroulez sur la base de données concernée le script ci-dessous :
Code :
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
31
32
33
BEGIN TRANSACTION
GO
-- 2-1 - Créez une  table temporaire ayant exactement la même structure que la table Produit 
CREATE TABLE dbo.Tmp_Produit
	(
	IdProduit INT NOT NULL IDENTITY (1, 1), 
       Libelle   VARCHAR(60) NULL 
	)  
ON [PRIMARY]
GO
-- 2-2 - Autorisez l'insertion dans l'unique colonne (IdProduit) de la table
--       Tmp_Produit, ayant la propriété IDENTITY
SET IDENTITY_INSERT dbo.Tmp_Produit ON
GO
-- 2-3 - Copiez les données de la table Produits vers la table temporaire Tmp_Produit
IF EXISTS(SELECT * FROM dbo.Produit)
	 EXEC('INSERT INTO dbo.Tmp_Produit (IdProduit, Libelle)
		SELECT IdProduit, Libelle FROM dbo.Produit WITH (HOLDLOCK TABLOCKX)')
GO
-- 2-4 – Interdisez l'insertion dans l'unique colonnne (IdProduit) de la table
--      Tmp_Produit, ayant la propriété IDENTITY
SET IDENTITY_INSERT dbo.Tmp_Produit OFF
GO
-- 2-5 - Supprimez, après avoir copié les données dans la table temporaire, 
--         la table originale Produit 
DROP TABLE dbo.Produit
GO
--  2-6 - Renommez la table temporaire 'Tmp_Produit' en 'Produit'. 
EXECUTE sp_rename N'dbo.Tmp_Produit', N'Produit', 'OBJECT' 
GO
-- 
COMMIT 
GO
3 - Recréez le cas échéant, tous les objets liés à la colonne IdProduit*: Clés étrangères (Foreign Keys) , clé primaire (Primary Key), Indexes etc.., supprimés à l'étape 1

A+
hmira est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h56.


 
 
 
 
Partenaires

Hébergement Web