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 droit
votre table dansl'explorateur d'objets
, le menu contextuel afficheraDesign
Cliquez 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é primaire
ou 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 avecNon
Double-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.