Изменение ENUM-типа в PostgreSQL

В PostgreSQL 9.1 значительно расширилась функциональность для работы с пользовательскими типами — появилась возможность добавлять, удалять и изменять атрибуты, а также добавлять значения в ENUM типы. До этой же версии, например в PostgreSQL 8.2, для добавления нового значение к ENUM требовалось совершить гораздо больше действий: ALTER TYPE "foo_type" RENAME TO "_old_foo_type"; CREATE TYPE "foo_type" AS ENUM ('old_one', 'new_one'); ALTER TABLE "bar" ALTER COLUMN "foo" SET DEFAULT NULL; ALTER TABLE "bar" ALTER COLUMN "foo" TYPE "foo_type" USING "foo"::TEXT::"foo_type"; ALTER TABLE "bar" ALTER COLUMN "foo" SET DEFAULT 'new_one'::foo_type; DROP TYPE "_old_foo_type"; ...

July 28, 2014

Автоматические индексы в PostgreSQL

Если вы постоянно используете PostgreSQL, то должно быть в курсе, что, в соответствии с SQL стандартами, при задании ограничений (Constraints) таких как первичный ключ (Primary Key) или ограничение уникальности (Uniqueness) автоматически создается и b-tree индекс для участвующих в ограничении полей, в то время как для внешнего ключа индекс не создается и его требуется генерировать вручную (подробнее можно прочитать здесь). Однако для людей ранее использовавших MySQL это может быть не очевидным, так как в MySQL InnoDB индексы создаются автоматически для всех внешних ключей, даже если index_name не указывается явным образом....

February 11, 2013