Membuat kunci primer

Berlaku untuk: SQL Server 2016 (13.x) dan Azure SQL DatabaseAzure SQL Managed Instance yang lebih baru

Anda dapat menentukan kunci utama di Mesin Database SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL. Membuat kunci primer secara otomatis membuat indeks berkluster unik yang sesuai. Namun, kunci utama Anda dapat ditentukan sebagai indeks non-kluster sebagai gantinya.

Sampel kode Transact-SQL dalam artikel ini menggunakan AdventureWorks2022 database sampel, yang dapat Anda unduh dari beranda Sampel Microsoft SQL Server dan Proyek Komunitas.

Batasan

Tabel hanya dapat berisi satu PRIMARY KEY batasan.

Semua kolom yang ditentukan dalam PRIMARY KEY batasan harus didefinisikan sebagai NOT NULL. Jika nullability tidak ditentukan, semua kolom yang PRIMARY KEY berpartisipasi dalam batasan memiliki nullability yang diatur ke NOT NULL.

Izin

Membuat tabel baru dengan kunci primer memerlukan CREATE TABLE izin dalam database dan ALTER izin pada skema tempat tabel sedang dibuat.

Membuat kunci primer dalam tabel yang sudah ada memerlukan ALTER izin pada tabel.

Menggunakan SQL Server Management Studio

  1. Di Object Explorer, klik kanan tabel yang ingin Anda tambahkan batasan uniknya, dan pilih Desain.
  2. Di Desainer Tabel, pilih pemilih baris untuk kolom database yang ingin Anda tentukan sebagai kunci utama. Jika Anda ingin memilih beberapa kolom, tahan tombol CTRL saat Anda memilih pemilih baris untuk kolom lain.
  3. Klik kanan pemilih baris untuk kolom dan pilih Atur Kunci Primer.

Perhatian

Jika Anda ingin menentukan ulang kunci primer, hubungan apa pun dengan kunci utama yang ada harus dihapus sebelum kunci primer baru dapat dibuat. Pesan akan memperingatkan Anda bahwa hubungan yang ada akan dihapus secara otomatis sebagai bagian dari proses ini.

Kolom kunci utama diidentifikasi oleh simbol kunci utama di pemilih barisnya.

Jika kunci primer terdiri dari lebih dari satu kolom, nilai duplikat diizinkan dalam satu kolom, tetapi setiap kombinasi nilai dari semua kolom di kunci utama harus unik.

Jika Anda menentukan kunci gabungan, urutan kolom di kunci utama cocok dengan urutan kolom seperti yang ditunjukkan dalam tabel. Namun, Anda dapat mengubah urutan kolom setelah kunci utama dibuat. Untuk informasi selengkapnya, lihat Mengubah Kunci Primer.

Menggunakan Transact-SQL

Membuat kunci primer dalam tabel yang sudah ada

Contoh berikut membuat kunci primer pada kolom TransactionID dalam AdventureWorks2022 database.

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

Membuat kunci primer dalam tabel baru

Contoh berikut membuat tabel dan menentukan kunci utama pada kolom TransactionID dalam AdventureWorks2022 database.

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

Membuat kunci primer non-kluster dengan indeks berkluster terpisah dalam tabel baru

Contoh berikut membuat tabel dalam AdventureWorks2022 database, dengan kunci primer non-kluster pada kolom CustomerID. Kemudian, ia menambahkan indeks berkluster pada TransactionID.

  1. Buat tabel untuk menambahkan indeks berkluster.

    CREATE TABLE [Production].[TransactionHistoryArchive1] (
        CustomerID UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID(),
        TransactionID INT IDENTITY(1, 1) NOT NULL,
        CONSTRAINT PK_TransactionHistoryArchive1_CustomerID PRIMARY KEY NONCLUSTERED (CustomerID)
    );
    
  2. Sekarang tambahkan indeks berkluster.

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