powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Уникальный(первичный) индекс...
8 сообщений из 8, страница 1 из 1
Уникальный(первичный) индекс...
    #33623145
Ляксандр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Имеем первичный индекс на таблице. Пришлось к таблице поле добавить, которое тоже надо проверять в купе со всеми на уникальность при INSERT/UPDATE. Как бы мне к существующему индексу это поле примансдрячить? В доке ничего разумительного не нашел... phpPgAdmin тоже ничем помочь не смог...

Заранее благодарен за помощь.
...
Рейтинг: 0 / 0
Уникальный(первичный) индекс...
    #33623433
Opilki_Inside
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может тебе нужно убить констреинт и создать заново?

alter table tablename
drop constraint ....

а можно просто для твоего поля создать уникальный (unique) индекс, не привязывая его к существующему первичному ключу
...
Рейтинг: 0 / 0
Уникальный(первичный) индекс...
    #33623451
Ляксандр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Opilki_InsideМожет тебе нужно убить констреинт и создать заново?

alter table tablename
drop constraint ....

а можно просто для твоего поля создать уникальный (unique) индекс, не привязывая его к существующему первичному ключу

а это будет в купе работать? :)
...
Рейтинг: 0 / 0
Уникальный(первичный) индекс...
    #33623470
Ляксандр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Opilki_Insideа можно просто для твоего поля создать уникальный (unique) индекс, не привязывая его к существующему первичному ключу

или может есть более простой вариант? У меня есть 9 полей, не сильно тяжеловесных (int, bigint, timestamp). Мне надо, что бы ВСЕ записи были уникальными.
...
Рейтинг: 0 / 0
Уникальный(первичный) индекс...
    #33623841
Opilki_Inside
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ляксандр Opilki_Insideа можно просто для твоего поля создать уникальный (unique) индекс, не привязывая его к существующему первичному ключу

или может есть более простой вариант? У меня есть 9 полей, не сильно тяжеловесных (int, bigint, timestamp). Мне надо, что бы ВСЕ записи были уникальными.

Код: plaintext
1.
2.
3.
4.
ALTER TABLE table_name
  DROP CONSTRAINT table_name_pkey;

ALTER TABLE table_name
  ADD CONSTRAINT table_name_pkey PRIMARY KEY(id, id2);

То? Т.е. поля id и id2 совместно обеспечивают уникальность записи
...
Рейтинг: 0 / 0
Уникальный(первичный) индекс...
    #33629205
Ляксандр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Opilki_Inside

Код: plaintext
1.
ALTER TABLE table_name
  ADD CONSTRAINT table_name_pkey PRIMARY KEY(id, id2);

То? Т.е. поля id и id2 совместно обеспечивают уникальность записи

эт-то я понял.... но теперь другой вопрос возник - а если уже есть повторяющиеся записи? индекс не строится. грит "а вот и нифига тебе, у тебя есть неуникальные записи" :)
кроме как SELECT DISTINCT...;DROP TABLE;INSERT INTO неужто нет никакого алгоритма? этож долго....
...
Рейтинг: 0 / 0
Уникальный(первичный) индекс...
    #33630270
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
begin;
delete from table_name
where not (ctid=(select ctid from table_name tn where tn.id = table_name.id and tn.id1=table_name.id1));

select * from table_name; -- просто так, убедимся, что не накосячили :-)

rollback; --если всё в порядке, эту строчку не выполняем :-)
commit;
...
Рейтинг: 0 / 0
Уникальный(первичный) индекс...
    #33632951
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вторая попытка :-)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
begin;
delete from table_name
where not (ctid=(select ctid from table_name tn where tn.id = table_name.id and tn.id1=table_name.id1 limit  1 ));

select * from table_name; -- просто так, убедимся, что не накосячили :-)

rollback; --если всё в порядке, эту строчку не выполняем :-)
commit;
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Уникальный(первичный) индекс...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]