2009-11-30 4 views
0

Dans MSSQL est-il un moyen de spécifier un nom pour une contrainte de PK afin que MSSQL ne fournit pas un nom comme si PK généré au hasard:Indiquez le nom PK lors de la création de la table

PK__Addresse__3214EC074E88ABD4 

La seule façon que je peux voir à le faire maintenant est de créer d'abord la table et ensuite émettre une commande ALTER pour renommer le PK. Ce serait plus facile si je pouvais le faire en un seul coup.

Répondre

2

Oui. Voici la syntaxe qui SSMS génère:

CREATE TABLE [Address] (
    [ID] [int] IDENTITY(1,1) NOT NULL, 
    << columns here >>, 
    CONSTRAINT [PK_Address] PRIMARY KEY CLUSTERED ([ID] ASC) 
    WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 
GO 
1

Au moment de la création de la table

CREATE TABLE MyTable 
(
    Id INT NOT NULL  
    CONSTRAINT PK_MyTable PRIMARY KEY (Id) 
) 

Si vous avez besoin de modifier la table et ajouter une contrainte primaire

ALTER TABLE MyTable 
ADD CONSTRAINT PK_MyTable PRIMARY KEY (Id) 

Hope this helps

+0

J'utiliserais PK_MyTable. Un nom de contrainte (PK, FK, CK, DF, etc.) doit être unique dans sys.objects, donc vous ne pouvez pas avoir "PK_ID" pour une autre table. – gbn

+0

Droit monsieur .. Je comprends mon erreur. Merci –

+0

J'ai modifié cela –

Questions connexes