SELECT TOP 1000 [LicensePlate]
,[Manufacturer]
,[Model]
,[Colour]
,[Year]
,[EngineSize]
,[Value]
FROM [Cars2].[dbo].[Cartable1]
Above is my layout for a cars table. I am completely new to SQL and was wondering how I would set 'Licence Plate' as the primary key?
4 Réponses :
Vous faites cela lorsque vous créez une table ou via une instruction alter table :
create table [Cars2].[dbo].[Cartable1] (
LicensePlace varchar(?) primary key,
. . .
);
Je vous recommande d'ajouter la clé primaire lorsque vous créez la table et avant ajoutez-y des données.
CREATE TABLE Cartable1(
LicensePlate int NOT NULL PRIMARY KEY,
Manufacturer varchar(255) NOT NULL,
Model varchar(255),
Colour varchar(255),
Model varchar(255),
Year int,
EngineSize int,
Value float
);
Commencez par rechercher les doublons par cette colonne.
ALTER TABLE Cars2.dbo.Cartable1 DROP CONSTRAINT ConstraintNameFromThePreviousQuery
Si un enregistrement apparaît, vous devez soit supprimer tous les doublons, soit mettre à jour leurs plaques d'immatriculation afin qu'ils ne se répètent plus.
/ p>
Vous devrez également vérifier les valeurs NULL et les mettre à jour ou les supprimer (la clé primaire ne peut pas être nulle).
USE Cars2; -- The database name here
DECLARE @TableName VARCHAR(100) = 'Cartable1'
DECLARE @SchemaName VARCHAR(100) = 'dbo'
SELECT
ColumnName = Col.Column_Name,
ConstraintName = tab.CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS Tab
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS Col ON
Col.Constraint_Name = Tab.Constraint_Name AND
Col.Table_Name = Tab.Table_Name
WHERE
Constraint_Type = 'PRIMARY KEY' AND
Col.Table_Name = @TableName AND
Col.TABLE_SCHEMA = @SchemaName
Ensuite, vous pouvez ajouter la contrainte PRIMARY KEY avec:
ALTER TABLE Cars2.dbo.Cartable1 ALTER COLUMN LicensePlate VARCHAR(20) NOT NULL -- The proper data type
Vous pourriez obtenir une erreur si LicensePlate peut contenir NULL code > valeurs. Vous pouvez le changer avec un ALTER TABLE :
ALTER TABLE Cars2.dbo.Cartable1
ADD CONSTRAINT PK_Cartable1 -- Name of the constraint
PRIMARY KEY (LicensePlate)
Si vous avez déjà une clé primaire définie sur cette table, vous devrez la supprimer puis créez votre nouvelle (une table ne peut avoir qu'une seule contrainte de clé primaire à la fois). Vous pouvez vérifier lequel est-il avec la requête suivante:
SELECT
C.*
FROM
Cars2.dbo.Cartable1 AS C
WHERE
C.LicensePlate IS NULL
Une fois que vous voyez le résultat, vous pouvez supprimer la clé primaire actuelle avec un autre ALTER TABLE code >:
SELECT
C.LicensePlate,
AmountDuplicates = COUNT(*)
FROM
Cars2.dbo.Cartable1 AS C
GROUP BY
C.LicensePlate
HAVING
COUNT(*) > 1
Merci pour cela! Mais maintenant, j'obtiens cette erreur: Msg 1779, niveau 16, état 0, ligne 1 La table «Cartable1» a déjà une clé primaire définie dessus.
J'ai modifié la réponse pour vérifier les clés primaires actuelles.
Merci pour cet EzLo
If You already have table with data try this ,
ALTER TABLE [Cars2].[dbo].[Cartable1]
ADD CONSTRAINT PRIMARY_KEY_LicensePlate PRIMARY KEY(LicensePlate)
Alors qu'avez-vous essayé? Il s'agit d'une requête SELECT, qui est une instruction DML (langage de manipulation de données). La définition d'une clé primaire nécessite l'utilisation d'une instruction DDL (langage de définition de données). En outre, utilisez-vous SSMS (SQL Server Management Studio)? Il existe des raccourcis et des options d'interface graphique que vous pouvez utiliser.
Faites un clic droitvotre table dansl'explorateur d'objets, le menu contextuel afficheraDesignCliquez dessus. Il vous montrera la conception de votre table.Vous pouvez maintenant cliquer avec le bouton droit sur une colonne et sélectionnerDéfinir la clé primaireou sélectionner votre colonne et rechercher l'icône de clé dans la barre d'outils. Cliquez dessus. Regardez ci-dessous les propriétés de la colonne lorsque la colonne principale est sélectionnée, cliquez sur la liste déroulanteSpécification d'identitéIl affichera deux lignes avecNonDouble-cliquez sur la deuxième, les deux deviendront Oui maintenant enregistrer parCtrl + S, si cela donne une erreur, vous devez trouver Outils> Options> Concepteur: décochezEmpêcher l'enregistrement ...Cliquez sur OK puis sur Enregistrer.