Làm cách nào để thay đổi bảng PostgreSQL và tạo một cột duy nhất?


166

Tôi có một bảng trong PostgreSQL nơi lược đồ trông như thế này:

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
)

Bây giờ tôi muốn làm cho permalink trở nên độc đáo trên bàn bằng cách THAY ĐỔI bảng. Ai có thể giúp tôi với điều này?

TIA


2
create unique index on foo_table (permalink)
a_horse_with_no_name

Câu trả lời:


270

Tôi đã tìm ra nó từ các tài liệu PostgreSQL, cú pháp chính xác là:

ALTER TABLE the_table ADD CONSTRAINT constraint_name UNIQUE (thecolumn);

Cảm ơn Fred .


231

Hoặc, có DB tự động gán tên ràng buộc bằng cách sử dụng:

ALTER TABLE foo ADD UNIQUE (thecolumn);

1
Nếu bạn làm điều này, postgres sẽ tạo ra ràng buộc nhưng tên sẽ được "tự động" gán là từ "thêm". Tôi vừa thử nó
Santi

Khi tôi sử dụng cú pháp ở trên, Postwards tạo ra một liên kết mới với tên mytable_mycolumn_key tôi khá hài lòng với điều đó :-)
Adam

41

cũng có thể tạo một ràng buộc duy nhất gồm hơn 1 cột:

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

Điều này dường như không hoạt động cho một cái gì đó như: ALTER TABLE actions ADD CONSTRAINT actions_unique_constraint UNIQUE (payload::text, name);hoặcALTER TABLE actions ADD CONSTRAINT actions_unique_constraint UNIQUE ((payload::text), name);
writofmandamus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.