|
|
dkLab | Конструктор | PostgreSQL 8.3, эмуляция ALTER ENUM: добавление/удаление элемента возможно
2008-08-13
Скачать функции изменения типа ENUM "на лету" для PostgreSQL 8.3:
Как установитьЭто просто: скачайте, распакуйте и запустите как обычный SQL-скрипт. В вашей базе данных появится новая схема с именем "enum"; она содержит все необходимые функции. Постановка проблемыХорошо известно, что конструкции ALTER TYPE для удобного типа ENUM PostgreSQL 8.3 не существует (по крайней мере, в версии 8.3.3). Таким образом, вы можете написать:
Примеры использования: enum_add() и enum_del()Предлагаемое решение состоит из двух функций, которые позволяют добавлять и удалять элементы в ENUM, производя при этом все необходимые проверки целостности базы данных. Вот несколько примеров их использования. -- Создаем тип ENUM и ссылающуюся на него таблицу.
CREATE TYPE my_enum AS ENUM('first', 'second');
CREATE TABLE my_table(id INTEGER, my my_enum);
-- Вставляем тестовые данные в таблицу.
INSERT INTO my_table(id, my) VALUES(1, 'second');
-- Добавляем новый элемент в ENUM "на лету".
SELECT enum.enum_add('my_enum', 'third');
-- Удаляем элемент из ENUM "на лету".
SELECT enum.enum_del('my_enum', 'first');
Видите, мы можем удалять элементы из -- Удаляем элемент из ENUM "на лету".
SELECT enum.enum_del('my_enum', 'first');
! ERROR: Cannot delete the ENUM element my_enum.second: column public.my_table.my contains references
Итак, целостность базы данных не нарушается, когда мы удаляем элемент из ENUM.
Битопливные котлы с раздельными камерами сгорания Kiturami KRM. | Автобусы паз . Российские автобусы на Грузовик.ру | www.x-point.ru - купить ноутбук |