HsqlDB数据库自增长的两种方式

原创 2022-09-23 18:43 阅读(1062)次

HsqlDB数据库自增长的两种方式:一种是IDENTITY,一种是使用SEQUENCE序列;下面介绍一下这两种方式,包括insert后如何获取最后的自增id;

自增:
CREATE TABLE mt_data_source (
id INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,
name varchar(255) DEFAULT NULL,
);

序列自增:
CREATE SEQUENCE seq
CREATE TABLE star (id INTEGER GENERATED BY DEFAULT AS SEQUENCE seq PRIMARY KEY,
firstname VARCHAR(20),
lastname VARCHAR(20))

重设自增长有两种方式:
IDENTITY: ALTER TABLE mytable ALTER COLUMN id GENERATED ALWAYS AS IDENTITY (START WITH 20000)
SEQUENCE: ALTER TABLE mytable ALTER COLUMN id GENERATED BY DEFAULT AS SEQUENCE seq

重新设置自增的起始值:
IDENTITY: ALTER TABLE mytable ALTER COLUMN id RESTART WITH 1000
SEQUENCE: ALTER TABLE mytable ALTER COLUMN id SET INCREMENT BY 5

插入数据时获得最后插入的值(需要在同一事务),如下star的id为自增
IDENTITY方式:

INSERT INTO star (id, firstname, lastname) VALUES (DEFAULT, ‘Felix’, ‘the Cat’)
INSERT INTO movies (starid, movieid, title) VALUES (IDENTITY(), 10, ‘Felix in Hollywood’)
或者用call IDENTITY()来获取star表最后写入的id

表字段使用SEQUENCE序列的方式:
INSERT INTO star (id, firstname, lastname) VALUES (DEFAULT, ‘Felix’, ‘the Cat’)
INSERT INTO movies (starid, movieid, title) VALUES (CURRENT VALUE FOR seq, 10, ‘Felix in
Hollywood’)
或者用select CURRENT VALUE FOR seq来获取star表最后写入的id,其中seq为序列名