Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Новое на сайте
Новое

Инструкции DROP советы и хитрости PostgreSQL

Платформа PostgreSQL не поддерживает дополнительные ключевые слова RESTRICT и CASCADE, поддерживаемые стандартом ANSI. Эта платформа поддерживает широкое разнообразие вариантов инструкции DROP, описываемых следующим синтаксисом.

DROP {AGGEGATE | DATABASE | FUNCTION | GROUP | INDEX | LANGUAGE | OPERATOR |RULE | SEQUENCE | TABLE | TRIGGER | TYPE | USER | VIEW} имя_объекта

Ниже приводится полный синтаксис для каждого из вариантов.

AGGREGATE имя_агрегата ({тип_данных *})

Удаляется пользовательская агрегатная функция. Параметр тип_данных — это тип данных существующей агрегатной функции, но вы можете заменить этот параметр звездочкой (*), которая соответствует любому типу данных. Например, мы можем удалить агрегатную функцию sales_avg, которую мы создали с помощью инструкции PostgreSQL CREATE AGGREGATE:

DROP AGGREGATE sales_avg(int4);

DATABASE имя_базы_данных

Удаляется указанная база данных и очищается директория операционной системы, содержащая все данные базы. Эту команду может выполнить только владелец базы данных при соединении с базой данных, отличной от удаляемой. Например, мы можем удалить базу данных sales_archive.

DROP DATABASE sales_archive;

FUNCTION имя_функции ([тип_дапных1 [, …] J)

Удаляется указанная пользовательская функция. Поскольку PostgreSQL разрешает использовать несколько функций с одинаковым именем, различаемых только по принимаемым параметрам, вы должны указать один или несколько параметров, которые однозначно идентифицируют функцию, которую вы собираетесь удалить. Система PostgreSQL не выполняет никаких проверок зависимостей в других объектах, которые могут ссылаться на удаляемую пользовательскую функцию. (Они не будут работать при вызове несуществующего объекта.) Пример:

DROP FUNCTION median_distribution (int, int, int, int);

GROUP имя группы

Удаляется указанная группа, но это удаление не затрагивает пользователей, входящих в эту группу. Эта инструкция сходна с инструкцией DROP ROLE других платформ.

INDEX имя _индекса [, …]

Удаляется один или несколько индексов, владельцем которых вы являетесь. Пример:

DROP INDEX ndx_titles, ndx_authors;

[PROCEDURAL] LANGUAGE название_языка

Удаляется указанный пользовательский язык. При желании вы можете заключить имя в одинарные кавычки. Обратите внимание, что PostgreSQL не производит проверку на наличие в базе данных пользовательских функций или триггеров, написанных на указанном языке. Пример:

DROP LANGUAGE PHP;

OPERATOR id_onepamopa ({типДанных слева NONE], {тип Данных справа NONE])

Удаляется указанный пользовательский оператор. Значение параметра типДан-иых_слева — это левый аргумент оператора, а тип Данных справа — это правый аргумент оператора. Предложение NONE можно заменить любым аргументом, если в данном положении аргумент отсутствует. (PostgreSQL не проводит проверку на наличие зависимых методов доступа и классов операторов, которые ссылаются на удаленные операторы). Вы должны выявить и удалить их вручную, чтобы избежать ошибок при их вызове. Например, первая из следующих инструкций удаляет оператор возведения в степень, а вторая удаляет унарный оператор изменения знака.

DROP OPERATOR (int4, int4); DROP OPERATOR (NONE, bool);

RULE имя_правила […]

Из базы данных удаляется одно или несколько правил. После этого система PostgreSQL немедленно прекращает выполнение этих правил и очищает исторические сведения об их использовании. Пример:

DROP RULE phone_rule;

SEQUENCE имя_последовательности [, …]

Из базы данных удаляется одна или несколько указанных последовательностей. Поскольку текущая версия PostgreSQL рассматривает последовательности как таблицы особого типа, работа инструкции DROP SEQUENCE во многом напоминает инструкцию DROP TABLE.

TABLE имя_таблицы […]

Из базы данных удаляется одна или несколько таблиц, а также все связанные с ними индексы и триггеры. Например, в одной инструкции можно удалить сразу несколько таблиц.

DROP TABLE authors, titles;

TRIGGER имя_триггера ON имя_таблицы

Из базы данных удаляется указанный триггер. Поскольку PostgreSQL требует, чтобы имя триггера было уникальным только в пределах таблицы, с которой он связан, в разных таблицах может быть много триггеров с такими именами, как insert_trigger или deletetrigger. Пример:

DROP TRIGGER insert_trigger ON authors;

TYPE имя_типа [, …]

Из базы данных удаляется один или несколько существующих пользовательских типов. Система PostgreSQL не проверяет, какое влияние команда DROP TYPE может оказать на зависимые объекты, такие, как функции, агрегаты и таблицы. Вы должны проверять зависимые объекты вручную. (Не удаляйте никакие встроенные типы, которые поставляются с PostgreSQL!) Обратите внимание, что реализация типов в PostgreSQL отличается от стандарта ANSI. За дополнительной информацией обращайтесь к разделу «Инструкция CREATE/ALTER ТУРЕ».

USER имя_пользователя

Из текущей базы данных удаляется указанный пользователь. Эта команда не удаляет никакие объекты, принадлежащие пользователю, такие, как таблицы или представления, и команда не будет выполнена, если пользователю принадлежит какая-нибудь база данных. Пример:

DROP USER emily;

VIEW имя представления [, …]

Из базы данных удаляется одно или несколько существующих представлений.

Обратите внимание, что операции удаления в PostgreSQL не позволяют указывать базу данных, в которой производится операция (за исключением инструкции DROP DATABASE). Поэтому вы должны выполнять любую операцию удаления из той базы, в которой расположен объект, который вы хотите удалить.

Источник