Платформа SQL Server підтримує для інструкції INSERТ кілька розширень стандарту ANSI. Підтримується кілька функцій для роботи з наборами рядків (пояснення нижче), а також можливість вставляти результати зі збережених процедур і розширених процедур прямо в цільову таблицю. Синтаксис інструкції INSERT в SQL Server наступний.
INSERT [INTO] ім'я_таблиці [(столбец1 [...])
VALUES (змінна 1 [...]) |
INSERT [INTO] ім'я_таблиці
Метою для вставки буде таблиця, подання або функція, яка працює з наборами даних (rowset functions). При вставці в уявлення інструкція INSERT не може торкатися більш однієї базової таблиці уявлення, якщо їх декілька. Функції для наборів даних дозволяють SQL Server отримувати дані зі спеціальних або зовнішніх джерел, таких, як потоки XML, файлові структури повнотекстового пошуку (особливі структури, які використовуються в SQL Server для зберігання в базі даних таких речей, як документи Microsoft Word і презентації MS PowerPoint ) і зовнішніх джерел даних (таких, як електронні таблиці Microsoft Excel). Приклади наводяться нижче в цьому розділі. В даний час SQL Server підтримує для інструкції INSERТ наступні функції для роботи з наборами.
Виконується транзитна інструкція INSERT для пов'язаного сервера. Це ефективний спосіб виконання вкладених інструкцій INSERT в зовнішніх по відношенню до SQL Server джерелах даних. Джерело даних повинен спочатку бути оголошений як пов'язаний сервер.
Виконується транзитна інструкція INSERT для зовнішнього джерела даних. Ця пропозиція схоже з OPENDATASOURCE, за винятком того, що пропозиція OPENDATASOURCE тільки відкриває джерело даних, але не передає в нього інструкцію INSERT. Пропозиція OPENROWSET призначається тільки для рідкого, спеціального використання.
Вказується один або декілька стовпців цільової таблиці. Список повинен бути укладений в дужки, і його елементи повинні розділятися комами.
Платформа PostgreSQL намагається виконати автоматичне приведення типів, якщо вираження в реченні VALUE або списку елементів підзапиту не збігаються з типами даних, що визначаються для цільової таблиці або подання, автоматично вставляє значення в стовпці IDENTITY, TIMESTAMP і стовпці з обмеженнями DEFAULT.
Інструкція створить новий рядок, використовуючи всі значення за замовчуванням, задані для даної таблиці.
Буде виконана динамічна інструкція Transact-SQL, збережена процедура, віддалений виклик процедури (Remote Procedure Call, RPC) або розширена збережена процедура, а результати будуть збережені в локальній таблиці. імя_процедури - це ім'я тієї процедури, яку ви хочете виконати. Також ви можете використовувати будь-які параметри процедури, що, які вказуються як @ параметр (знак @ є обов'язковим), присвоювати значення параметрам і при бажанні позначити якийсь параметр як вихідний (OUTPUT). Стовпці, які повертаються в результуючому наборі даних, повинні відповідати за типом стовпцями цільової таблиці.
Хоча SQL Server автоматично присвоює значення стовпцями IDENTITY a TIMESTAMP, платформа не робить цього для стовпців UNIQUEIDENTIFIER. Будь-який з стовпців з першими типами даних ви можете пропустити в списку значень і в списку стовпців, однак не можна пропускати стовпці UNIQUEIDENTIFIER. Щоб згенерувати і вставити глобальний унікальний ідентифікатор (GUID), ви повинні використовувати функцію NEWIDQ.
INSERT INTO guid_sample (global_ID, sample_text, sample_int)
VALUES (NEWID (), 'insert first record', '10000')
При перенесенні коду з платформи на платформу пам'ятайте, що вставка порожнього рядка в стовпці TEXT і VARCHAR в SQL Server призводить до створення рядка з нульовою довжиною. Це не те ж саме, що значення NULL, як це інтерпретують деякі платформи.
У прикладах інструкцій INSERT ... EXEC, що приводяться нижче, спочатку створюється тимчасова таблиця з ім'ям #ins_exec_container. Після цього операція вставки отримує список елементів директорії C: temp і зберігає його в тимчасовій таблиці, а друга інструкція INSERТ виконує динамічну інструкцію SELECT.
CREATE TABLE #ins_exec_container (result_text
VARCHAR (300) NULL) GO
INSERT INTO #ins_exec_container
EXEC master.xp_cmdshell 'dir c: temp'
INSERT INTO sales
Така функціональність може бути вельми корисна в збережених процедурах, якщо, наприклад, ви хочете реалізувати бізнес-логіку за допомогою збережених процедур Transact-SQL, визначати стан об'єктів в базі даних і поза нею, а потім виконувати якісь дії на основі цих результатів.
Платформа SQL Server дозволяє використовувати підказки оптимізатора, щоб обійти задану за замовчуванням стратегію оптимізації для інструкцій INSERT. Цей тип настройки рекомендується виконувати тільки найбільш компетентним користувачам. Повна інформація про те, які підказки можна використовувати з інструкцією INSERT, наводиться в доку-ментації виробника.
Додаткова інформація по темі
Правила і методи використання інструкції GRANT в базах даних на платформі SQL Server
Способи та методи використання інструкції DELETE в базах даних на платформі SQL Server
Деякі поради і методи використання інструкції INSERT в базах даних на платформі MySQL
Способи та методи використання інструкції DROP в базах даних на платформі SQL Server