Вставить идентификатор (автоматически сгенерированный, только столбец) - PullRequest
8 голосов
/ 13 апреля 2011

Как должен выглядеть мой оператор SQL (MS-SQL), если я не хочу вставлять строку в таблицу, которая содержит только один столбец с автоматически сгенерированным идентификатором?

После двух выигранных запросовt работа:

INSERT INTO MyTable (MyTableId) VALUES (Null)
-- or simply
INSERT INTO MyTable 

Спасибо за любые чаевые.sl3dg3

Ответы [ 2 ]

14 голосов
/ 13 апреля 2011

INSERT INTO MyTable (MyTableId) VALUES (Null) неявно пытается вставить нулевое значение в столбец идентификаторов, так что это не будет работать, поскольку столбцы идентификаторов могут никогда не обнуляться, и без опции SET вы не сможете вставить произвольное значение в любом случае, вместо этого вы можете использовать:

INSERT INTO MyTable DEFAULT VALUES
1 голос
/ 18 апреля 2014

Для полноты изложения стандарт SQL и большинство баз данных для этого поддерживают условие DEFAULT VALUES:

INSERT INTO MyTable DEFAULT VALUES;

Это поддерживается в

  • CUBRID
  • Firebird
  • H2
  • HSQLDB
  • Энгр
  • PostgreSQL
  • SQLite
  • SQL Server (ваша база данных)
  • Sybase SQL Anywhere

Если вышеприведенное не поддерживается, вы все равно можете написать это утверждение как обходной путь:

INSERT INTO MyTable (MyTableId)  VALUES (DEFAULT);

Это также будет работать с:

  • Доступ
  • DB2
  • MariaDB
  • MySQL
  • Oracle

Подробнее см. В этом блоге здесь:

http://blog.jooq.org/2014/01/08/lesser-known-sql-features-default-values/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...