Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Che cos'è il vincolo della chiave primaria nel database di SQL Server - Tutorial SQL Server/T-SQL Parte 54

Cos'è il vincolo della chiave primaria:

Il vincolo della chiave primaria viene creato per garantire l'unicità di record/righe. Il vincolo della chiave primaria può essere creato su colonne singole o su un insieme di colonne purché la colonna o le colonne non consentano valori Null.
1) Il vincolo della chiave primaria crea un indice cluster per impostazione predefinita se non esiste già Diciamo che stai creando una nuova tabella e hai aggiunto una colonna con la chiave primaria, creerà un indice cluster.
Nell'esempio seguente stiamo creando la tabella dbo.Customer e abbiamo aggiunto CustomerId come vincolo della chiave primaria. Verifichiamo il tipo di indice creato.
USE YourDatabaseName
GO

CREATE TABLE dbo.Customer (
    Customerid INT PRIMARY KEY
    ,FName VARCHAR(100)
    ,LName VARCHAR(100)
    ,SSN VARCHAR(10)
    )
 
 Possiamo interrogare la vista di sistema di sys.indexes per ottenere informazioni sull'indice 
SELECT *
FROM sys.indexes
WHERE object_name(object_id) = 'Customer'
 
 Come puoi vedere, l'indice cluster viene creato poiché non esisteva alcun indice cluster in questa tabella prima. Notato il nome per l'indice cluster, viene generato da SQL Server. È sempre una buona idea fornire un nome corretto per gli indici in base alla convenzione di denominazione/standard utilizzati dalla tua azienda. 

2) Se l'indice cluster è già creato su Colonna, Primario La chiave sta per creare un indice univoco Se l'indice cluster è già presente su una colonna/colonne in una tabella e proviamo a creare la chiave primaria, verrà creata un'unica non cluster.
Eliminiamo e ricreiamo la tabella dbo.Customer. Poiché non possiamo creare un indice cluster su colonne che accettano valori Null, dobbiamo definire le nostre colonne non nulle.
USE YourDatabaseName
GO
Drop table dbo.Customer
GO

CREATE TABLE dbo.Customer (
    Customerid INT Not Null
    ,FName VARCHAR(100)
    ,LName VARCHAR(100)
    ,SSN VARCHAR(10) Not Null
    )

--Create Clustered Index on SSN Column
CREATE CLUSTERED INDEX IX_Customer_SSN 
    ON dbo.Customer (SSN); 


--Create Primary Key on CustomerID
Alter Table dbo.Customer
Add Constraint Pk_Customer_CustomerId Primary Key(CustomerId)
 
 
 
 Verifichiamo che tipo di indici vengono creati utilizzando la vista di sistema sys.indexes. Dovrebbe esserci un indice cluster creato su SSN e dovrebbe esserci un unico non cluster che dovrebbe essere creato da Primary Key Constraint.
Che cos'è il vincolo della chiave primaria in SQL Server - Tutorial SQL Server/TSQL

Video demo:cos'è il vincolo della chiave primaria in SQL Server e come creare una chiave primaria