在表中创建仅包含自动生成的字段的行 - SQL

时间:2014-04-18 09:26:24

标签: sql db2

我有下表:

CREATE TABLE "MIGRATION"."VERSION"
(
ID BIGINT PRIMARY KEY NOT NULL GENERATED BY DEFAULT AS IDENTITY,
VERSION_DATE timestamp DEFAULT CURRENT TIMESTAMP NOT NULL
)

我想在该表中插入一个“新行”,但由于所有内容都是自动生成的,我该怎么办呢?

INSERT INTO "MIGRATION"."VERSION" VALUES();

无效。必须这样做,不能改变。

2 个答案:

答案 0 :(得分:6)

SQL标准和大多数数据库支持DEFAULT VALUES子句:

INSERT INTO "MIGRATION"."VERSION" DEFAULT VALUES;

支持此功能
  • CUBRID
  • 火鸟
  • H2
  • HSQLDB
  • 的Ingres
  • 的PostgreSQL
  • SQLite的
  • SQL Server
  • Sybase SQL Anywhere

如果不支持上述内容,您仍可以将此语句编写为变通方法。事实上,第一个由SQL标准指定为等同于第二个:

INSERT INTO "MIGRATION"."VERSION" (ID, VERSION_DATE) VALUES (DEFAULT, DEFAULT);

这将适用于:

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

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

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

答案 1 :(得分:0)

只需使用:

INSERT INTO "MIGRATION"."VERSION" DEFAULT VALUES

reference Here