Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

O que é restrição de chave primária no banco de dados SQL Server - Tutorial SQL Server / T-SQL Parte 54

O que é restrição de chave primária:

A restrição de chave primária é criada para garantir a exclusividade de registros/linhas. A restrição de chave primária pode ser criada em uma única coluna ou em um conjunto de colunas, desde que a coluna/colunas não permitam valores nulos.
1) A restrição de chave primária cria um índice clusterizado por padrão, se ainda não existir Digamos que você está criando uma nova tabela e adicionou uma coluna com Chave Primária, ela vai criar um índice clusterizado.
No exemplo abaixo estamos criando a tabela dbo.Customer e adicionamos CustomerId como Primary Key Constraint. Vamos verificar que tipo de índice é criado.
USE YourDatabaseName
GO

CREATE TABLE dbo.Customer (
    Customerid INT PRIMARY KEY
    ,FName VARCHAR(100)
    ,LName VARCHAR(100)
    ,SSN VARCHAR(10)
    )
 
 Podemos consultar a exibição do sistema sys.indexes para obter informações de índice 
SELECT *
FROM sys.indexes
WHERE object_name(object_id) = 'Customer'
 
 Como você pode ver que o índice clusterizado é criado, pois não havia índice cluster nesta tabela antes. Percebi o nome do índice clusterizado, ele é gerado pelo SQL Server. É sempre uma boa ideia fornecer um nome adequado para os índices de acordo com a convenção de nomenclatura/padrões que sua empresa está usando. 

2) Se o índice clusterizado já estiver criado na coluna, primária A chave vai criar um índice exclusivo Se o índice clusterizado já estiver presente na coluna/colunas de uma tabela e tentarmos criar a Chave Primária, ela criará um Não clusterizado exclusivo.
Vamos descartar e recriar a tabela dbo.Customer. Como não podemos criar um índice clusterizado em colunas que aceitam valores nulos, temos que definir nossas colunas não nulas.
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)
 
 
 
 Vamos verificar que tipo de índices são criados usando a exibição do sistema sys.indexes. Deve haver um índice clusterizado como criamos no SSN e deve haver um único não clusterizado que deve ser criado pela restrição de chave primária.
O que é restrição de chave primária no SQL Server - SQL Server / Tutorial TSQL

Demonstração em vídeo:o que é restrição de chave primária no SQL Server e como criar chave primária