我有下表:
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();
不工作.必须这样做,不能改变.
SQL标准和大多数数据库支持以下DEFAULT VALUES
子句:
INSERT INTO "MIGRATION"."VERSION" DEFAULT VALUES;
这是支持的
CUBRID
火鸟
H2
HSQLDB
安格尔
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/