PostgreSQL tablosunu nasıl ALTER yapabilir ve bir sütunu nasıl benzersiz hale getirebilirim?


166

Şema böyle görünüyor PostgreSQL bir tablo var:

CREATE TABLE "foo_table" (
    "id" serial NOT NULL PRIMARY KEY,
    "permalink" varchar(200) NOT NULL,
    "text" varchar(512) NOT NULL,
    "timestamp" timestamp with time zone NOT NULL
)

Şimdi, tabloyu ALTERing yaparak kalıcı bağlantıyı tablo boyunca benzersiz kılmak istiyorum. Biri bana bu konuda yardımcı olabilir mi?

TIA


2
create unique index on foo_table (permalink)
a_horse_with_no_name

Yanıtlar:


270

PostgreSQL belgelerinden anladım, tam sözdizimi:

ALTER TABLE the_table ADD CONSTRAINT constraint_name UNIQUE (thecolumn);

Teşekkürler Fred .


231

Veya, DB'nin aşağıdakileri kullanarak otomatik olarak bir kısıtlama adı atamasını sağlayın:

ALTER TABLE foo ADD UNIQUE (thecolumn);

1
Bunu yaparsanız, postgres kısıtlamayı yaratacaktır ancak isim "otomatik olarak" atanacaksa "ekle" kelimesi atanır. Ben sadece denedim
Santi

Yukarıdaki sözdizimini kullandığımda, Postgress mytable_mycolumn_key bundan çok memnun olduğum isimle yeni bir çelişki yaratıyor :-)
Adam

41

1 sütundan fazla benzersiz bir kısıtlama oluşturmak da mümkündür:

ALTER TABLE the_table 
    ADD CONSTRAINT constraint_name UNIQUE (column1, column2);

Bu gibi bir şey için çalışmıyor gibi görünüyor: ALTER TABLE actions ADD CONSTRAINT actions_unique_constraint UNIQUE (payload::text, name);veyaALTER TABLE actions ADD CONSTRAINT actions_unique_constraint UNIQUE ((payload::text), name);
writofmandamus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.