Как я могу понять документацию, следующие определения эквивалентны:
create table foo (
id serial primary key,
code integer,
label text,
constraint foo_uq unique (code, label));
create table foo (
id serial primary key,
code integer,
label text);
create unique index foo_idx on foo using btree (code, label);
Однако вы можете прочитать в примечании: предпочтительным способом добавления уникального ограничения в таблицу является ALTER TABLE... ADD CONSTRAINT. Использование индексов для обеспечения уникальных ограничений можно рассматривать как деталь реализации, к которой не следует обращаться напрямую.
Это только вопрос хорошего стиля? Каковы практические последствия выбора одного из этих вариантов (например, в работе)?