Все знают, что в команде INSERT имена полей таблицы не являются обязательными параметрами. Сразу скажу, что я никогда не использую подобный INSERT только с указанием значений полей, и вам не рекомендую. А вы задумывались, что список значений полей может тоже не являться обязательной частью этой команды?
Например, у нас есть таблица в базе SQL Server:
Нам поможет параметр "DEFAULT VALUES". Согласно документации:
Например, у нас есть таблица в базе SQL Server:
Как вы видите, у этой таблицы оба поля заполняются значениями самим SQL Server. Как без указаний значений полей вставить строку в таблицу?CREATE TABLE TestTable ( ID int IDENTITY, Timestamp datetime NOT NULL default getdate(), CONSTRAINT pk_TestTable PRIMARY KEY (ID) )
Нам поможет параметр "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
О том, как получить в программе значение INSERTED.ID я уже описывал в статье "Получение в программе значения первичного ключа после INSERT".INSERT INTO TestTable output INSERTED.ID DEFAULT VALUES
Комментариев нет:
Отправить комментарий