Добавляет в конец таблицы новую запись, которая содержит указанные значения полей. Команда INSERT SQL имеет три синтаксиса:
- Используйте первый синтаксис, чтобы вставить указанные значения в указанные поля таблицы.
- Используйте второй синтаксис, чтобы вставить содержание элементов массива, переменной памяти, или свойства объекта, которые соответствуют именам полей в таблице.
- Используйте третий синтаксис, чтобы вставить строки из команды SQL SELECT в указанные поля таблицы.
INSERT INTO dbf_name [(FieldName1 [, FieldName2, ...])] |
INSERT INTO dbf_name FROM ARRAY ArrayName | FROM MEMVAR | FROM NAME ObjectName |
INSERT INTO dbf_name [(FieldName1 [, FieldName2, ...])] |
Параметры
- 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, потому что многие штатные свойства имеют типы, которые могут отличаться от полей, с которыми Вы работаете и не могут быть изменены.
- ARRAY
- 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 |
Пример 2
Следующий пример использует команду USE , чтобы открыть таблицу "Клиенты" в базе данных TestData.dbc и команду SCATTER , чтобы скопировать содержание текущей записи в переменные. COPY STRUCTURE копирует структуру таблицы в новую таблицу Cust2.
INSERT вставляет новую запись в таблицу Cust2 из переменных памяти. SELECT извлекает данные из Cust2, и BROWSE отображает новую запись.
Для завершения используются команда USE без указания таблицы, которая закрывает таблицу в текущей рабочей области, и DELETE, которая удаляет Cust2.
![]() | |
---|---|
CLOSE DATABASES |
Пример 3
Следующий пример вставляет данные из таблицы OrdersArchive инструкцией SELECT, выполненной над таблицей "Заказы".
![]() | |
---|---|
INSERT INTO OrdersArchive (order_id, order_date, ship_name) ; |
См. Также
Ссылки
MODIFY QUERY Команда_TALLY Системная Переменная
Другие Ресурсы
КомандыCREATE QUERY Команда
CREATE TABLE - SQL Команда