插入ID(自动生成,仅列)

时间:2011-04-13 14:49:29

标签: sql sql-server-2005

如果我不想在表中插入一行,我的SQL语句(MS-SQL)应该是什么样子,该表只包含一个具有自动生成ID的列?

以下两个查询无效:

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

任何tipps的Thx。 sl3dg3

2 个答案:

答案 0 :(得分:14)

INSERT INTO MyTable (MyTableId) VALUES (Null)隐式尝试在标识列中插入一个null,因此不会有效,因为标识列可能永远不可为空,如果没有SET选项,您无法插入任意值,而是可以使用:

INSERT INTO MyTable DEFAULT VALUES

答案 1 :(得分:1)

为了完整起见,SQL标准和大多数数据库支持DEFAULT VALUES子句:

INSERT INTO MyTable DEFAULT VALUES;

支持此功能
  • CUBRID
  • 火鸟
  • H2
  • HSQLDB
  • 的Ingres
  • 的PostgreSQL
  • SQLite的
  • SQL Server(您的数据库)
  • Sybase SQL Anywhere

如果不支持上述内容,您仍然可以将此语句编写为解决方法:

INSERT INTO MyTable (MyTableId)  VALUES (DEFAULT);

这将适用于:

  • 访问
  • DB2
  • MariaDB的
  • MySQL的
  • 甲骨文

有关详情,请参阅此博客文章:

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