13 марта 2011 г. 2:00 пользователь Nikolay Samokhvalov <samokhvalov@gmail.com> написал:
UNIQUE INDEX это уже и есть ограничение целостности (constraint).
А вот это не так. Ограничение уникальности (UNIQUE CONSTRAINT) является не индексом, а его зависимостью. Т.е. невозможно удалить уникальный индекс, порожденный неявно при создании ограничения уникальности. Видимо, именно такой объект и хочет создать автор. Однако следует иметь в виду, что индекс, автоматически создаваемый при создании ограничения уникальности будет не частичным.
Приветствую ценителя теории ))
Уникальный индекс -- это уже и есть ограничение целостности. Можно ещё раз повторю? И ещё, на ночь, чтобы запомнилось.
Где тут "не так"? ))
Повторяйте сколько угодно раз, хоть сто. За одно повторите чтение (можно на ночь) http://www.postgresql.org/docs/9.0/static/ddl-constraints.html пункта 5.3.3 о том, что такое UNIQUE CONSTRAINT, не упустив из виду "Adding a unique constraint will automatically create a unique btree index on the column or group of columns used in the constraint.". Надеюсь, что после этого Вы не станете утверждать, что ограничение уникальности является уникальным (btree) индексом. Я всегда ратовал и буду ратовать за корректность.
Для новичков нужно запоминать именно так, чтобы как раз и не возникало вопросов "а как создать constraint".
Ой, да ладно про "спец курсы для новичков". :-)
Про размер индекса -- верно, частичный индекс экономит место, если NULL-ов ожидается много. Но при этом надо понимать, что будут последствия для оптимайзера (всё же это индекс и он может пригодиться не только как ограничение целостности).
Какие такие последствия?
По поводу что-то не так делаю и спать пора -- желательно привести пример, показывающий суть вопроса (что за одинаковые 'col'). Может, там не в collation дело, а в какой-нибудь кириллической буковке, смахивающей на латинницу )