Добавляет в конец таблицы новую запись, которая содержит указанные значения полей. Команда INSERT SQL имеет три синтаксиса:

INSERT INTO dbf_name [(FieldName1 [, FieldName2, ...])]
VALUES (eExpression1 [, eExpression2, ...])
INSERT INTO dbf_name FROM ARRAY ArrayName | FROM MEMVAR | FROM NAME ObjectName
      
INSERT INTO dbf_name [(FieldName1 [, FieldName2, ...])]
SELECT SELECTClauses [UNION UnionClause SELECT SELECTClauses ...]

Параметры

INSERT INTO dbf_Name

Определяет имя таблицы, чтобы добавить в её конец новую запись. dbf_Name может включать путь и может быть именным выражением.
[( FieldName1 [, FieldName2 [...]])]

Определяет имена полей новой записи, в которую вставляются значения.
VALUES ( eExpression1 [, eExpression2 [...]])

Определяет значения полей, которые будут вставлены в новую запись. Если Вы опускаете имена полей, Вы должны определить значения полей в порядке, определяемом структурой таблицы. Если eExpression является именем поля, оно должно включать псевдоним таблицы. Если SET NULL установлен в ON , INSERT пытается вставлять значения null в любые поля, не указанные в предложении VALUES .
FROM Source

Определяет вставку данных из массива, переменной памяти, или объекта Visual FoxPro. Следующий список указывет допустимые элементы для Source :
  • ARRAY

    ArrayName определяет массив, данные которого вставляются в новую запись.

    Начинаясь с первого элемента, содержание элементов массива вставляется в соответствующие поля записи. Содержание первого элемента массива вставляется в первое поле новой записи; содержание второго элемента массива вставляется во второе поле, и так далее.

    Когда Вы включаете предложение FROM ARRAY , Visual FoxPro игнорирует любые значения по умолчанию для полей.

  • MEMVAR

    MEMVAR определяет, что содержание переменных памяти вставляется в поля с теми же самыми именами как у переменных. Если переменной с таким же имененм как у поля не существует, поле остается пустым.

  • NAME

    ObjectName определяет допустимый объект Visual FoxPro, имена свойств которого соответствуют именам полей в таблице, в которую Вы хотите вставить новую запись, содержащую значения свойства объекта. Вы можете определить любой допустимый объект Visual FoxPro, который Вы обычно создаете использованием команды SCATTER...NAME . Для подробной информации, см. SCATTER Команда .

    Если таблица имеет поле, которое действительно соответствует свойству объекта, Visual FoxPro игнорирует поле и оставляет его пустым как при выполнении команды APPEND BLANK .

    Если тип свойства объекта не соответствует типу поля таблицы, Visual FoxPro генерирует сообщение о несоответствии типов данных.

    Обратите внимание:
    Проявите осмотрительность при определении объектов, полученных из классов Visual FoxPro, потому что многие штатные свойства имеют типы, которые могут отличаться от полей, с которыми Вы работаете и не могут быть изменены.

    Если в таблице существует автоинкрементное поле, Вы не сможете располагать свойством объекта, которое соответствует автоинкрементному полю, если Вы не установите команду SET AUTOINCERROR в значение OFF для сессии данных. Иначе, Visual FoxPro генерирует ошибку. Если Вы используете SCATTER...NAME для создания объекта в то время как SET AUTOINCERROR установлено в ON , Вы можете использовать функцию REMOVEPROPERTY () , чтобы удалить любые автоинкрементные свойства, чтобы избежать генерирования ошибки. Для подробной информации, см. SET AUTOINCERROR Команда и REMOVEPROPERTY( ) Функция .

Массив, переменная памяти, или объект не поддерживаются средством Visual FoxPro OLEDB.
SELECT SELECTClauses [UNION UnionClause SELECT SELECTClauses  ...]

Извлекает данные из указанных полей таблицы или курсора, используя один или более инструкций SQL SELECT, чтобы вставить в другую таблицу или курсор. Однако, инструкция SELECT не может содержать никаких предложений non-SQL, типа следующих: предложений INTO , TO , и PREFERENCE ; опций NOFILTER , READWRITE , NOCONSOLE , PLAIN , и NOWAIT. Для объединения дополнительных инструкций SQL SELECT с первой инструкцией SQL SELECT, используйте предложение UNION . Для синтаксиса команды SQL SELECT, которая содержит предложение UNION , см. SELECT  - SQL Команда .
Обратите внимание:
Когда Вы используете SQL INSERTвсместе с инструкцией SELECT, убедитесь, что данные, которые Вы вставляете, совместимы с типами данных в таблице, в которую Вы вставляете. Visual FoxPro пытается преобразовывать типы данных в курсоре, созданном SQL SELECT в типы данных соответствующей таблицы или столбце курсора, в который данные вставляются. Если вставляемые данные не совместимы, точность данных может быть потеряна, тип данных Date приводится к типу данных Character и так далее.

Замечания

Если таблица, которую Вы определяете, является открытой, SQL INSERT добавляет в конец таблицы новую запись. Если таблица является открытой в другой рабочей области, она не становится активной после того, как запись добавлена в конец; текущая рабочая область остается активной.

Если указанная Вами таблица не открыта, Visual FoxPro открывает её в новой рабочей области, и новая запись добавляется в конец таблицы. Новая рабочая область не становится активной; текущая рабочая область остается активной.

В то время как выполняется команда SQL INSERT, текущая рабочая область становится областью, в которую вставлена новая запись. Другими словами, когда выполняется команда SQL INSERT, она до своего запуска переходит в контекст таблицы, куда идет вставка, независимо от текущей рабочей области.

После выполнения команды INSERT, Visual FoxPro устанавливает указатель на новую запись.

Visual FoxPro обновляет системную переменную _TALLY количеством вставленных строк, если Вы включаете инструкцию SQL SELECT. Для подробной информации, см. _TALLY Системная Переменная .

Примеры

Пример 1

Следующий пример открывает таблицу Employee и добавляет одну запись.

Скопировать код
USE employee
INSERT INTO employee (emp_no, fname, lname, officeno) ;
VALUES (3022, "John", "Smith", 2101)

Пример 2

Следующий пример использует команду USE , чтобы открыть таблицу "Клиенты" в базе данных TestData.dbc и команду SCATTER , чтобы скопировать содержание текущей записи в переменные. COPY STRUCTURE копирует структуру таблицы в новую таблицу Cust2.

INSERT вставляет новую запись в таблицу Cust2 из переменных памяти. SELECT извлекает данные из Cust2, и BROWSE отображает новую запись.

Для завершения используются команда USE без указания таблицы, которая закрывает таблицу в текущей рабочей области, и DELETE, которая удаляет Cust2.

Скопировать код
CLOSE DATABASES
CLEAR
OPEN DATABASE (HOME(2) + 'Data\TestData')
USE Customer
SCATTER MEMVAR
COPY STRUCTURE TO Cust2
INSERT INTO Cust2 FROM MEMVAR
SELECT CUST2
BROWSE
USE
DELETE FILE cust2.dbf

Пример 3

Следующий пример вставляет данные из таблицы OrdersArchive инструкцией SELECT, выполненной над таблицей "Заказы".

Скопировать код
INSERT INTO OrdersArchive (order_id, order_date, ship_name) ;
SELECT order_id, order_date, ship_name FROM Orders ;
WHERE order_date >= (DATE()-30)

См. Также