Saya memiliki tabel berikut:
tickername | tickerbbname | tickertype
------------+---------------+------------
USDZAR | USDZAR Curncy | C
EURCZK | EURCZK Curncy | C
EURPLN | EURPLN Curncy | C
USDBRL | USDBRL Curncy | C
USDTRY | USDTRY Curncy | C
EURHUF | EURHUF Curncy | C
USDRUB | USDRUB Curncy | C
Saya tidak ingin ada yang pernah lebih dari satu kolom untuk setiap diberikan tickername
/ tickerbbname
pasangan. Saya sudah membuat tabel dan memiliki banyak data di dalamnya (yang telah saya pastikan memenuhi kriteria unik). Karena semakin besar, ruang untuk kesalahan merayap masuk
Apakah ada cara untuk menambahkan UNIQUE
batasan pada saat ini?
sql
database
postgresql
indexing
unique-constraint
Thomas Browne
sumber
sumber
Jawaban:
psql
Bantuan sebaris:Juga didokumentasikan dalam dokumen postgres (sumber yang bagus, ditambah juga mudah dibaca).
sumber
ALTER TABLE tablename ADD UNIQUE (columns);
. (Perhatikan bahwaCONSTRAINT
kata kunci harus dihilangkan.)Ya kamu bisa. Tetapi jika Anda memiliki entri yang tidak unik di meja Anda, itu akan gagal. Berikut adalah cara menambahkan batasan unik di meja Anda. Jika Anda menggunakan PostgreSQL 9.x Anda dapat mengikuti instruksi di bawah ini.
sumber
Jika Anda memiliki tabel yang sudah memiliki kendala yang ada berdasarkan katakanlah: nama dan nama belakang dan Anda ingin menambahkan satu kendala lagi yang unik, Anda harus menghapus seluruh batasan dengan:
Pastikan bahwa kendala baru yang ingin Anda tambahkan adalah unik / bukan nol (jika Microsoft Sql, itu hanya dapat berisi satu nilai nol) di semua data pada tabel itu, dan kemudian Anda dapat membuatnya kembali.
sumber
Ya, Anda dapat menambahkan batasan UNIK setelah faktanya. Namun, jika Anda memiliki entri yang tidak unik di tabel Anda, Postgres akan mengeluh tentang hal itu sampai Anda memperbaikinya.
sumber
select <column> from <table> group by 1 having count(*) > 1;
akan memberikan laporan tentang nilai duplikat.