Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

SQL Server 2005. Добавляет новую строку к таблице или представлению



Добавляет новую строку к таблице или представлению.

Соглашения о синтаксическом обозначении в Transact-SQL

Синтаксис

[ WITH <common_table_expression> [,...n ] ]INSERT [ TOP (expression) [ PERCENT ] ] [ INTO] { <object> | rowset_function_limited [ WITH (<Table_Hint_Limited> [...n ]) ] }{ [ (column_list) ] [ <OUTPUT Clause> ] { VALUES ({ DEFAULT | NULL | expression } [,...n ]) | derived_table | execute_statement } } | DEFAULT VALUES [; ] <object>::={ [ server_name. database_name. schema_name. | database_name.[ schema_name ]. | schema_name. ] table_or_view_name}

Аргументы

WITH <common_table_expression>

Определяет временный именованный результирующий набор, также называемый обобщенным табличным выражением, определенным в области инструкции INSERT. Результирующий набор получается из инструкции SELECT.

Обобщенные табличные выражения также используются инструкциями SELECT, DELETE, UPDATE и CREATE VIEW. Дополнительные сведения см. в разделе WITH общее_табличное_выражение (Transact-SQL).

TOP ( expression ) [ PERCENT ]

Задает количество или процент случайных строк для вставки. Выражение expression может быть либо количеством, либо процентом строк. Строки, на которые ссылается выражение TOP, используемое с INSERT, UPDATE и DELETE, не упорядочены.

В инструкциях INSERT, UPDATE и DELETE необходимо разделять круглыми скобками аргумент expression в выражении TOP. Дополнительные сведения см. в разделе TOP (Transact-SQL).

INTO

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

server_name

Имя сервера (используется функцией OPENDATASOURCE как имя сервера), на котором находится таблица или представление. Если указан аргумент server_name, также необходимо указать аргументы database_name и schema_name.

database_name

Имя базы данных.

schema_name

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

table_or view_name

Имя таблицы или представления, которые принимают данные.

Переменную table внутри своей области можно использовать как имя исходной таблицы в инструкции INSERT.

Представление, на которое ссылается аргумент table_or_view_name, должно быть обновляемым и ссылаться ровно на одну базовую таблицу в предложении FROM данного представления. Например, инструкция INSERT в многотабличном представлении должна использовать аргумент column_list, который ссылается только на столбцы из одной базовой таблицы. Дополнительные сведения об обновляемых представлениях см. в разделе CREATE VIEW (Transact-SQL).

rowset_function_limited

Либо функция OPENQUERY, либо функция OPENROWSET.

WITH ( <table_hint_limited> [... n ] )

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

Нельзя использовать подсказки READPAST, NOLOCK, и READUNCOMMITTED. Дополнительные сведения о табличных подсказках см. в разделе Табличная подсказка (Transact-SQL).

Важно!
Возможность указать подсказки HOLDLOCK, SERIALIZABLE, READCOMMITTED, REPEATABLEREAD или UPDLOCK в целевых таблицах инструкций INSERT будет удалена в будущих версиях SQL Server. Эти подсказки не влияют на производительность инструкций INSERT. Избегайте применять их в новых разработках и запланируйте внесение изменений в приложения, использующие их в настоящее время.

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

( column_list )

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

Если столбец не внесен в column_list, то компонент SQL Server 2005 Database Engine должен обеспечить значение, основанное на определении столбца; в противном случае строку нельзя будет загрузить. Компонент Database Engine автоматически задает значение для столбца, если столбец имеет следующие характеристики.

· Имеется свойство IDENTITY. Используется следующее значение приращения для идентификатора.

· Имеется стандартное значение. Используется стандартное значение для столбца.

· Имеет тип данных timestamp. В этом случае используется текущее значение timestamp.

· Неопределенное значение. Используется значение Null.

· Вычисляемый столбец. Используется вычисленное значение.

Аргумент column_list и список VALUES необходимо использовать, когда в столбец идентификаторов вставляются явно заданные значения, а параметру SET IDENTITY_INSERT необходимо присвоить значение ON для таблицы.

Предложение OUTPUT

Возвращает вставленные строки во время операции вставки. Предложение OUTPUT не поддерживается инструкциями DML, которые ссылаются на локальные секционированные представления, распределенные секционированные представления, расположенные удаленно таблицы или инструкции INSERT, содержащие аргумент execute_statement.

VALUES

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

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

DEFAULT

Указывает компоненту Database Engine необходимость принудительно загружать значения по умолчанию, определенные для столбца. Если для столбца не задано значение по умолчанию и он может содержать значение NULL, вставляется значение NULL. В столбцы с типом данных timestamp вставляется следующее значение временной метки. Значение DEFAULT недопустимо для столбца идентификаторов.

expression

Константа, переменная или выражение. В выражении не может содержаться инструкция SELECT или EXECUTE.

derived_table

Любая допустимая инструкция SELECT, возвращающая строки данных, которые загружаются в таблицу. Инструкция SELECT не может содержать обобщенное табличное выражение (CTE).

execute_statement

Любая допустимая инструкция EXECUTE, возвращающая данные с помощью инструкций SELECT или READTEXT. Инструкция SELECT не может содержать CTE-выражение.

Если аргумент execute_statement используется с инструкцией INSERT, каждый результирующий набор должен быть совместим со столбцами в таблице или списке column_list.

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

В SQL Server 2008 изменена семантика транзакций инструкций INSERT...EXECUTE, выполняемых на связанном сервере с замыканием на себя. В SQL Server 2005 этот сценарий не поддерживается и приводит к ошибкам. В SQL Server 2008 инструкция INSERT...EXECUTE может применяться к связанному серверу с замыканием на себя, когда для соединения не включен режим MARS. Если режим MARS не включен для соединения, то поведение такое же, как в SQL Server 2005.

Если аргумент execute_statement возвращает данные с инструкцией READTEXT, необходимо учитывать, что каждая инструкция READTEXT может возвращать не более 1 МБ (1024 КБ) данных. Аргумент execute_statement также может использоваться с расширенными процедурами. В этом случае он вставляет данные, возвращенные основным потоком расширенной процедуры, но выходные данные, возвращенные потоками, отличными от основного, не будут вставлены.

DEFAULT VALUES

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





Дата публикования: 2015-02-03; Прочитано: 242 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...