Aracılığıyla paylaş


Birincil anahtarlar oluşturma

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

SQL Server Management Studio veya Transact-SQL kullanarak SQL Server Veritabanı Altyapısı'nda birincil anahtar tanımlayabilirsiniz. Birincil anahtar oluşturmak otomatik olarak karşılık gelen benzersiz bir kümelenmiş dizin oluşturur. Ancak, birincil anahtarınız bunun yerine bir kümelenmemiş dizin olarak belirtilebilir.

Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.

Limitations

Tablo yalnızca bir PRIMARY KEY kısıtlaması içerebilir.

PRIMARY KEY kısıtlaması içinde tanımlanan tüm sütunlar NOT NULLolarak tanımlanmalıdır. Null atanabilirlik belirtilmezse, PRIMARY KEY kısıtlamasına katılan tüm sütunların null atanabilirlik değeri NOT NULLolarak ayarlanır.

Permissions

Birincil anahtarla yeni bir tablo oluşturmak için veritabanında CREATE TABLE izni ve tablonun oluşturulduğu şema üzerinde ALTER izni gerekir.

Varolan bir tabloda birincil anahtar oluşturmak için tabloda ALTER izni gerekir.

SQL Server Management Studio kullanma

  1. Nesne Gezgini'nde, benzersiz bir kısıtlama eklemek istediğiniz tabloya sağ tıklayın ve Tasarımöğesini seçin.
  2. Tablo Tasarımcısı'nde, birincil anahtar olarak tanımlamak istediğiniz veritabanı sütunu için satır seçiciyi seçin. Birden çok sütun seçmek istiyorsanız, diğer sütunların satır seçicilerini seçerken CTRL tuşunu basılı tutun.
  3. Satır seçicisine sağ tıklayın ve Birincil Anahtarı Ayarlaseçeneğini seçin.

Caution

Birincil anahtarı yeniden tanımlamak istiyorsanız, yeni birincil anahtarın oluşturulabilmesi için önce mevcut birincil anahtarla tüm ilişkilerin silinmesi gerekir. Var olan ilişkilerin bu işlemin bir parçası olarak otomatik olarak silineceği konusunda sizi uyaran bir ileti görüntülenir.

Birincil anahtar sütunu, satır seçicisindeki birincil anahtar simgesiyle tanımlanır.

Birincil anahtar birden fazla sütundan oluşuyorsa, bir sütunda yinelenen değerlere izin verilir, ancak birincil anahtardaki tüm sütunlardaki değerlerin her birleşimi benzersiz olmalıdır.

Bileşik anahtar tanımlarsanız, birincil anahtardaki sütunların sırası tabloda gösterildiği gibi sütunların sırasıyla eşleşir. Ancak, birincil anahtar oluşturulduktan sonra sütunların sırasını değiştirebilirsiniz. Daha fazla bilgi için bkz. Birincil Anahtarları Değiştirme.

Transact-SQL kullanma

Mevcut tabloda birincil anahtar oluşturma

Aşağıdaki örnek, TransactionID veritabanındaki AdventureWorks2025 sütununda birincil anahtar oluşturur.

ALTER TABLE [Production].[TransactionHistoryArchive]
   ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID);

Yeni tabloda birincil anahtar oluşturma

Aşağıdaki örnek bir tablo oluşturur ve TransactionID veritabanındaki sütun AdventureWorks2025 birincil anahtarı tanımlar.

CREATE TABLE [Production].[TransactionHistoryArchive1] (
    TransactionID INT IDENTITY(1, 1) NOT NULL,
    CONSTRAINT PK_TransactionHistoryArchive1_TransactionID PRIMARY KEY CLUSTERED (TransactionID)
);

Yeni bir tabloda ayrı bir kümelenmiş dizinle birlikte kümelenmemiş birincil anahtar oluşturma

Aşağıdaki örnek, AdventureWorks2025 veritabanında CustomerIDsütununda kümelenmemiş birincil anahtar içeren bir tablo oluşturur. Ardından, TransactionIDüzerine kümelenmiş bir dizin ekler.

  1. Kümelenmiş dizini eklemek için bir tablo oluşturun.

    CREATE TABLE [Production].[TransactionHistoryArchive1] (
        CustomerID UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID(),
        TransactionID INT IDENTITY(1, 1) NOT NULL,
        CONSTRAINT PK_TransactionHistoryArchive1_CustomerID PRIMARY KEY NONCLUSTERED (CustomerID)
    );
    
  2. Şimdi kümelenmiş dizini ekleyin.

    CREATE CLUSTERED INDEX CIX_TransactionID
    ON [Production].[TransactionHistoryArchive1] (TransactionID);