SQL Server 2005 Bagaimana Membuat Kendala Unik?


181

Bagaimana cara membuat batasan unik pada tabel yang ada di SQL Server 2005?

Saya mencari TSQL dan bagaimana melakukannya di Database Diagram.

Jawaban:


272

Perintah SQL adalah:

ALTER TABLE <tablename> ADD CONSTRAINT
            <constraintname> UNIQUE NONCLUSTERED
    (
                <columnname>
    )

Lihat sintaks lengkapnya di sini .

Jika Anda ingin melakukannya dari Diagram Database:

  • klik kanan pada tabel dan pilih 'Indeks / Kunci'
  • klik tombol Add untuk menambahkan indeks baru
  • masukkan info yang diperlukan di Properties di sebelah kanan:
    • kolom yang Anda inginkan (klik tombol elipsis untuk memilih)
    • atur Unik ke Ya
    • berikan nama yang sesuai

1
Ini berfungsi ... tapi ... mengapa kendala ditampilkan di bawah folder INDEX, bukan folder CONSTRAINTS. Ini ditampilkan dengan ikon lain, tetapi bagaimanapun juga harus di folder kendala.
Fernando Torres

84

Dalam SQL Server Management Studio Express:

  • Klik kanan tabel, pilih Modifikasi atau Desain (Untuk Versi Selanjutnya)
  • Klik kanan bidang, pilih Indeks / Kunci ...
  • Klik Tambah
  • Untuk Kolom , pilih nama bidang yang Anda ingin menjadi unik.
  • Untuk Jenis , pilih Kunci Unik .
  • Klik Tutup , Simpan tabel.

29
ALTER TABLE [TableName] ADD CONSTRAINT  [constraintName] UNIQUE ([columns])

15

Peringatan: Hanya satu baris nol yang dapat berada di kolom yang Anda atur menjadi unik.

Anda dapat melakukan ini dengan indeks yang difilter dalam SQL 2008:

CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON dbo.MyTable(col1)
WHERE col1 IS NOT NULL;

Lihat Nilai bidang harus unik kecuali NULL untuk rentang jawaban.


bagaimana Anda melakukannya di sql server 2005?
Maxrunner

2
Ini tidak dapat dicapai dalam sql server 2005. Saya akan sangat menyarankan untuk memutakhirkan ke RDBMS yang lebih mutakhir - ini akan secara resmi tidak didukung pada 12 April 2016.
reedstonefood

13
ALTER TABLE dbo.<tablename> ADD CONSTRAINT
            <namingconventionconstraint> UNIQUE NONCLUSTERED
    (
                <columnname>
    ) ON [PRIMARY]

10

Saya juga menemukan Anda dapat melakukan ini melalui, diagram database.

Dengan mengklik kanan tabel dan memilih Indeks / Kunci ...

Klik tombol 'Tambah', dan ubah kolom ke kolom yang ingin Anda buat unik.

Ubah Unik untuk Ya.

Klik tutup dan simpan diagram, dan itu akan menambahkannya ke tabel.



6

Untuk membuat batasan UNIQUE pada satu atau beberapa kolom ketika tabel sudah dibuat, gunakan SQL berikut:

ALTER TABLE TableName ADd UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

Untuk mengizinkan penamaan kendala UNIK untuk kueri di atas

ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

Permintaan didukung oleh MySQL / SQL Server / Oracle / MS Access.


UNIQUE NONCLUSTERED dan opsi PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON ?
Kiquenet

5

Dalam diagram studio manajemen pilih tabel, klik kanan untuk menambahkan kolom baru jika diinginkan, klik kanan pada kolom dan pilih "Periksa Kendala", di sana Anda dapat menambahkan satu.


0

Dalam beberapa situasi, mungkin diinginkan untuk memastikan kunci Unik tidak ada sebelum membuatnya. Dalam kasus seperti itu, skrip di bawah ini mungkin membantu:

IF Exists(SELECT * FROM sys.indexes WHERE name Like '<index_name>')
    ALTER TABLE dbo.<target_table_name> DROP CONSTRAINT <index_name> 
GO

ALTER TABLE dbo.<target_table_name> ADD CONSTRAINT <index_name> UNIQUE NONCLUSTERED (<col_1>, <col_2>, ..., <col_n>) 
GO
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.