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.

David Basarab
sumber

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
Rory
sumber
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.
James Lawruk
sumber
29
ALTER TABLE [TableName] ADD CONSTRAINT  [constraintName] UNIQUE ([columns])
WildJoe
sumber
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.

Tupai
sumber
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]
Ivan Bosnic
sumber
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.

David Basarab
sumber
8

Anda mencari sesuatu seperti yang berikut ini

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b

MSDN Documents

Thunder3
sumber
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.

Rafiq
sumber
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.

Owa
sumber
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
Mario Vázquez
sumber