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

Инструкция CREATE/ALTER TABLE советы и хитрости программирования

Пользователь, подающий команду CREATE TABLE, должен иметь соответствующие права доступа. Точно так же таблица, которую хочет изменить или удалить пользователь, должна принадлежать к его схеме или он должен иметь соответствующие права для изменения или удаления таблицы. Поскольку в стандарте ANSI не указываются необходимые привилегии, у разных производителей можно ожидать наличие вариаций.

Вы можете включать инструкции CREATE TABLE или ALTER TABLE в транзакцию с помощью инструкций COMMIT и ROLLBACK, завершая, таким образом, транзакции явным образом.

Вы можете хорошо контролировать способ физической записи таблиц на диск с помощью расширений стандарта ANSI. В DB2 и SQL Server для управления записью на диск используется метод, называемый кластеризованными индексами. В Oracle используется функционально сходный метод, называющийся «индекс-таблица» (index-organized table).

Некоторые базы данных блокируют таблицы, которые изменяются при помощи инструкций ALTER TABLE. Поэтому эту команду нужно выполнять только применительно к таблицам, которые не используются в рабочей базе данных.

В некоторых базах данных при использовании инструкции CREATE TABLE…LIKE блокируются и таблица-цель, и таблица-источник.


DB2

В DB2 поддерживается богатый и продуманный набор расширений инструкции CREATE TABLE.

CREATE TABLE имя_таблицы {(имя_столбца тип_данных атрибуты [, …]) |

OF имя_типа [{UNDER супертаблица INHERIT SELECT PRIVILEGES | HIERARCHY имя_иерархии}] [определение_таблицы] |

AS подзапрос {опции_производной_таблицы | DEFINITION ONLY [опции_копирования]} |

[LIKE имя_таблицы] [опции_копирования] | [[(вспомогательный_столбец [, …])]

FOR имя_таблицы PROPAGATE IMMEDIATE]} [ORGANIZE BY [DIMENSIONS] (имя_столбца [, …])] [DATA CAPTURE {NONE | CHANGES}]

[IN имя_табличной_области [INDEX IN имя_табличной_области]

[LONG IN имя_табличной_области]] [VALUE COMPRESSION] [WITH RESTRICT ON DROP] [NOT LOGGED INITIALLY]

[{REPLICATED | PARTITIONING KEY {имя_столбца [, …])

[USING HASHING]}] [OPTIONS (REMOTE_SERVER ‘ имя_сервера’)

[, REMOTE_SCHEMA ‘имя_схемы’]

[, REMOTE_TABNAME имя_таблицы’]]

Также богатая расширениями инструкция ALTER TABLE в DB2 позволяет вносить много полезных изменений в существующие таблицы без удаления существующих индексов, триггеров и допусков, связанных с ними.

ALTER TABLE имя_таблицы {[ADD {{[COLUMN] имя_столбца тип_данных атрибуты} |

табличное_ограничение | ключ_секционирования | RESTRICT_ON_DROP} | {[ALTER {{CHECK |

FOREIGN KEY} имя_ограничения определение_ограничения] |

[COLUMN] имя_столбца определение_столбца} {[DROP тип_ограничения имя_ограничения] | ключ_секционирования |

RESTRICT_ON_DROP} | [DATA CAPTURE {NONE | CHANGES [INCLUDE LONGVAR COLUMNS]}

| [ACTIVATE NOT LOGGED INITIALLY [WITH EMPTY TABLE]] | [PCTFREE int] I

[LOCKSIZE {ROW | TABLE}] | [APPEND {ON | OFF}] | [[NOT] VOLATILE [CARDINATITY]] | [[DEACTIVATE VALUE COMPRESSION]} […]

| SET MATERIALIZED QUERY AS {DEFINITION ONLY | подзапрос]


Параметры для этих команд следующие

(имя_столбца тип_данных атрибуты […])

Определение столбца согласно стандарту ANSI. Однако в DB2 поддерживается несколько дополнительных атрибутов, специфичных для специальных типов данных DB2. Поддерживаются все стандартные атрибуты ANSI, например NOT NULL. За подробностями обращайтесь к главе 2, разделу о типах данных.

UNDER супертаблица INHERIT SELECT PRIVELEGES | HIERARCHY имя_иерархии

Сходно с предложением OF стандарта ANSI в команде CREATE TABLE с двумя дополнительными предложениями — INHERIT и HIERARCHY. При указании предложения INHERIT пользователь или группа, имеющие доступ для чтения в супертаблице, также должны иметь доступ для чтения в новой таблице. Предложение HIERARCHY связывает подтаблицу с иерархией таблиц, имя_иерархии — это имя корневой таблицы иерархии. Если предложение опущено, DB2 генерирует имя_иерархии самостоятельно.

определение таблицы

Определяются элементы объектной таблицы, в том числе дополнительные опции столбцов и столбец OID корневой таблицы, а также ограничения таблиц.

Источник