Новости



Visual FoxPro 9 позволяет создавать ещё более производительные приложения баз данных.
Двадцатиление FoxPro! Microsoft принимает поздравления.
Visual FoxPro Toolkit for .NET - более 225 функций VFP 7.0, для языков .NET (подробнее)

Команда CREATE TABLE - SQL

См. также Пример

Создает таблицу, имеющую указанные поля.

Синтаксис

CREATE TABLE | DBF TableName1 [NAME LongTableName] [FREE]
(FieldName1 FieldType [(nFieldWidth [, nPrecision])]
[NULL | NOT NULL]
[CHECK lExpression1 [ERROR cMessageText1]]
[DEFAULT eExpression1]
[PRIMARY KEY | UNIQUE]
[REFERENCES TableName2 [TAG TagName1]]
[NOCPTRANS]
[, FieldName2 ...]
[, PRIMARY KEY eExpression2 TAG TagName2
|, UNIQUE eExpression3 TAG TagName3]
[, FOREIGN KEY eExpression4 TAG TagName4 [NODUP]
REFERENCES TableName3 [TAG TagName5]]
[, CHECK lExpression2 [ERROR cMessageText2]])
| FROM ARRAY ArrayName

Параметры

CREATE TABLE | DBF TableName1

Задает имя создаваемой таблицы. Опции TABLE и DBF идентичны.

NAME LongTableName

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

Длинное имя может содержать до 128 символов и применяться вместо коротких имен файлов в базах данных.

FREE

Указывает, что данная таблица не будет включена в открытую базу данных. Если открытых баз данных нет, параметр FREE можно не задавать.

(FieldName1 FieldType [(nFieldWidth [, nPrecision])]

Задает соответственно имя поля, его тип, ширину и точность (число десятичных з аков).

FieldType fox90001.gif это буква, обозначающая тип данных поля. Для некоторых типов полей необходимо задавать параметры nFieldWidth и/или nPrecision.

В следующей таблице перечислены значения, используемые в качестве FieldType, и указывается, необходимо ли при этом задавать nFieldWidth и nPrecision.

FieldType
nFieldWidth
nPrecision
Описание типа данных
C
n
-
Символьное поле ширины n
D
-
-
Дата
T
-
-
Тип DateTime
N
n
d
Числовое поле ширины n, содержащее d десятичных знаков
F
n
d
Плавающее числовое поле ширины n, содержащее d десятичных знаков
I
-
-
Целочисленное
B
-
d
Двойной
Y
-
-
Тип Currency
L
-
-
Логический
M
-
-
Memo
G
-
-
General

Для типов D, T, I, Y, L, M, G и P аргументы nFieldWidth и nPrecision игнорируются. Если для типа N, F или B параметр nPrecision не задан, его значение по умолчанию принимается равным нулю (нет десятичных з аков).

NULL

Разрешает иметь в поле значения NULL.

NOT NULL

Запрещает значения NULL в поле.

Если опущены параметры NULL и NOT NULL, то допустимость значений NULL в поле определяется текущей установкой SET NULL. Однако если вы, опустив NULL и NOT NULL, включили предложение PRIMARY KEY или UNIQUE, текущая установка SET NULL игно ируется и для данного поля по умолчанию принимается опция NOT NULL.

CHECK lExpression1

Задает правило для поля. В качестве lExpression1 можно указать пользовательскую функцию. Учтите, что правило проверяется и при присоединении пустой записи. Если данное правило не допускает пустые значения полей в присоединяемой записи, генерируется ошибка.

ERROR cMessageText1

Задает текст сообщения об ошибке, которое Visual FoxPro выдает при нарушении п авила поля. Это сообщение выдается только в том случае, когда происходит изме ение данных в окне просмотра или в окне редактирования.

DEFAULT eExpression1

Задает значение, принимаемое в поле по умолчанию. Тип данных выражения eExpression1 должен совпадать с типом данных поля.

PRIMARY KEY

Создает для поля первичный индекс. Тег первичного индекса имеет то же имя, что и поле.

UNIQUE

Создает индекс-кандидат для поля. Имя тега индекса-кандидата совпадает с име ем поля. Подробнее о индексах-кандидатах см. тему Использование индексов и главу 7 "Работа с таблицами" Руководства разработчика.

Замечание Индексы-кандидаты (создаваемые с помощью опции UNIQUE команды CREATE TABLE и и ALTER TABLE - SQL) отличаются от индексов, создаваемых с помощью опции UNIQUE команды INDEX. В индексе, созданном по команде INDEX с опцией UNIQUE, разреше ы повторяющиеся ключи индекса; в индексах-кандидатах повторение ключей индекса запрещено. Подробнее об опции UNIQUE см. тему INDEX.

В поле, используемом для первичного индекса или для индекса-кандидата, не опускаются значения NULL и повторяющиеся записи. Однако если вы создали первичный индекс или индекс-кандидат для поля, поддерживающего значения NULL, Visual FoxPro не будет генерировать ошибку. Ошибка будет сгенерирована в том случае, когда вы попытаетесь ввести в поле, используемое для первичного индекса или ин екса-кандидата, значение NULL или повторяющееся значение.

REFERENCES TableName2 [TAG TagName1]

Задает родительскую таблицу, с которой устанавливается постоянное отношение. Если опустить аргумент TAG TagName1, отношение устанавливается на основе ключа первичного индекса родительской та лицы. Если родительская таблица не имеет первичного индекса, Visual FoxPro ге ерирует ошибку.

Задав TAG TagName1, вы установите отношение на базе существующего тега индекса родительской таб ицы. Имя тега индекса может включать до 10 символов.

В качестве родительской таблицы нельзя использовать свободную таблицу.

NOCPTRANS

Запрещает трансляцию содержимого символьных и memo-полей в другую кодовую стра ицу. Если таблица преобразуется в другую кодовую страницу, то поля, для котор х задана опция NOCPTRANS, транслироваться не будут. NOCPTRANS можно указывать только для символьных и memo-полей.

В следующем примере создается таблица MYTABLE, содержащая два символьных поля и два memo-поля. Для второго символьного поля CHAR2 и второго memo-поля MEMO2 задана опция NOCPTRANS, запрещающая их трансляцию.

CREATE TABLE mytable (char1 C(10), char2 C(10) NOCPTRANS,;
memo1 M, memo2 M NOCPTRANS)

PRIMARY KEY eExpression2 TAG TagName2

Задает первичный индекс, который предстоит создать. Выражение eExpression2 задает произвольное поле или комбинацию полей таблицы. TAG TagName2 задает имя создаваемого тега первичного индекса. Имя тега индекса может вк ючать до 10 символов.

Поскольку таблица может иметь только один первичный индекс, вы не можете за авать это предложение, если уже создали для данного поля первичный индекс. Visual FoxPro сгенерирует ошибку, если в команду CREATE TABLE включено более одного п едложения PRIMARY KEY.

UNIQUE eExpression3 TAG TagName3

Создает индекс-кандидат. Выражение eExpression3 задает произвольное поле или комбинацию полей таблицы. Однако если вы создали первичный индекс с помощью одной из опций PRIMARY KEY, вы не сможете испо ьзовать поле, заданное для первичного индекса. TAG TagName3 определяет имя создаваемого тега индекса-кандидата. Имя тега индекса может вк ючать до 10 символов.

У таблицы может быть несколько индексов-кандидатов.

FOREIGN KEY eExpression4 TAG TagName4 [NODUP]

Создает внешний (отличный от первичного) индекс и устанавливает отношение с ро ительской таблицей. eExpression4 задает выражение ключа внешнего индекса, а TagName4 fox90001.gif имя создаваемого тега ключа внешнего индекса. Имя тега индекса может включать до 10 символов. Чтобы создать внешний ин екс-кандидат, укажите ключевое слово NODUP.

Вы можете создать для таблицы несколько внешних индексов, но при этом все вы ажения внешних индексов должны задавать разные поля в таблице.

REFERENCES TableName3 [TAG TagName5]

Задает родительскую таблицу, с которой устанавливается постоянное отношение. Задав TAG TagName5, вы установите отношение на базе тега индекса родительской таблицы. Имя тега индекса может включать до 10 символов. Если опустить TAG TagName5, отношение по умолчанию устанавливается с использованием ключа первичного ин екса родительской таблицы.

CHECK eExpression2 [ERROR cMessageText2]

Задает правило таблицы. ERROR cMessageText2 задает сообщение об ошибке, которое Visual FoxPro выдает при выполнении прави а таблицы. Это сообщение выдается только в том случае, когда происходит измене ие данных в окне просмотра или в окне редактирования.

FROM ARRAY ArrayName

Задает имя существующего массива, содержимое которого представляет собой значе ие имени, типа, ширины и масштаба для каждого поля таблицы. Подобный массив можно определить с помощью функции AFIELDS( ).

Комментарии

Новая таблица открывается в рабочей области с наименьшим из имеющихся номеров; к этой таблице можно обращаться по псевдониму. Новая таблица открывается для монопольного пользования, независимо от текущей установки SET EXCLUSIVE.

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

Если база данных открыта, то для команды CREATE TABLE - SQL требуется монополь ое пользование этой базой данных. Чтобы открыть базу данных в монопольном ежиме, включите предложение EXCLUSIVE в команду OPEN DATABASE.

Если в момент создания новой таблицы нет открытой базы данных, то включение п едложения NAME, CHECK, DEFAULT, FOREIGN KEY, PRIMARY KEY или REFERENCES вызовет ошибку.

Заметьте, что в синтаксисе команды CREATE TABLE для разделения определенных опций использованы запятые. Кроме того, предложения NULL, NOT NULL, CHECK, DEFAULT, PRIMARY KEY и UNIQUE должны помещаться внутри скобок, содержащих определения столбцов.



Новое на сайте

  • Обновлен портфель программиста

    Добавлены: Установка HTML Help (Создание справочной системы), Imagedit.zip - Графический редактор ( ico и bmp), Библиотека локализации HTML Help (Русский)
  • Новые примеры программ

    Установка библиотек, Игровая программа "Охота на лис", Установка библиотек "Охота на лис", plastic -"Платежки", Библиотеки (на FPD26), platan -"Платежки" (на Clipper 5.2)
  • Обновленна справка

    Подсказки, технология программирования и использование Visual FoxPro. Команды, функции, операторы, объекты, свойства, события и методы.