J'ai une table existante que je suis sur le point de souffler parce que je ne l'ai pas créée avec la ID
colonne définie pour être la colonne Identité de la table.
À l'aide de SQL Server Management Studio , j'ai écrit un script "Créer vers ..." de la table existante et j'ai obtenu ceci:
CREATE TABLE [dbo].[History](
[ID] [int] NOT NULL,
[RequestID] [int] NOT NULL,
[EmployeeID] [varchar](50) NOT NULL,
[DateStamp] [datetime] NOT NULL,
CONSTRAINT [PK_History] 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]
Ma question est la suivante: comment modifierais-je cela SQL
pour que ma table résultante ait la ID
colonne définie comme identité ?
sql
sql-server
tsql
jp2code
la source
la source
Réponses:
la source
PK_History
valeur enID
ou quoi que ce soit?Cela a déjà été répondu, mais je pense que la syntaxe la plus simple est:
L'index de contrainte plus complexe est utile lorsque vous souhaitez réellement modifier les options.
En passant, je préfère nommer une telle colonne HistoryId, afin qu'elle corresponde aux noms des colonnes dans les relations de clé étrangère.
la source
ID int constraint PK_History primary key identity(1,1)
Je crois.NOT NULL
est redondant.bien sûr, puisque vous créez la table dans SQL Server Management Studio, vous pouvez utiliser le concepteur de table pour définir la spécification d'identité.
la source
La clé unique autorise au maximum 2 valeurs NULL. Explication:
Si vous essayez d'insérer les mêmes valeurs que ci-dessous:
Chaque fois que vous obtiendrez une erreur comme:
la source
ID
colonne unique , pas laName
colonne. Pourquoi avez-vous ajouté la contrainte unique à laName
colonne? Comment cela vous profite-t-il dans votreteppp
table?