12 августа 2020

INSERT в таблицу без указания значений полей

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

    Например, у нас есть таблица в базе SQL Server:
CREATE TABLE TestTable
(
  ID         int IDENTITY,
  Timestamp  datetime NOT NULL default getdate(),
  CONSTRAINT pk_TestTable PRIMARY KEY (ID)
)
Как вы видите, у этой таблицы оба поля заполняются значениями самим SQL Server. Как без указаний значений полей вставить строку в таблицу?

    Нам поможет параметр "DEFAULT VALUES". Согласно документации:
DEFAULT VALUES
Applies to: SQL Server 2008 and later.
Forces the new row to contain the default values defined for each column.
То есть ответ на мой вопрос:
INSERT INTO TestTable DEFAULT VALUES
Теперь немного усложним задачу. Одной командой, без указаний значений полей, вставим строку в таблицу и вернем значение вставленного идентификатора:
INSERT INTO TestTable output INSERTED.ID DEFAULT VALUES
    О том, как получить в программе значение INSERTED.ID я уже описывал в статье "Получение в программе значения первичного ключа после INSERT".

Комментариев нет:

Отправка комментария