当前位置: 首页 > 面试题库 >

将序列链接到hsqldb中的标识

江阳夏
2023-03-14
问题内容

在PostgreSql中,可以定义一个序列并将其用作表的主键。在HsqlDB中,仍然可以完成创建一个自动递增的标识列,该列不链接到任何用户定义的序列。是否可以将用户定义的序列用作HsqlDB中自动递增标识列的生成器?

PostgreSql中的示例sql:

CREATE SEQUENCE seq_company_id START WITH 1;

CREATE TABLE company (
  id bigint PRIMARY KEY DEFAULT nextval('seq_company_id'),
  name varchar(128) NOT NULL CHECK (name <> '')
);

HsqlDB中的等效项是什么?

谢谢。


问题答案:

在2.0版中,没有直接的功能。您可以在表上定义一个BEFORE INSERT触发器来执行此操作:

CREATE TABLE company ( id bigint PRIMARY KEY, name varchar(128) NOT NULL CHECK (name <> '') );

CREATE TRIGGER trigg BEFORE INSERT
ON company REFERENCING NEW ROW AS newrow 
FOR EACH ROW
SET newrow.id = NEXT VALUE FOR seq_company_id;

并插入而不使用任何vlue作为ID

INSERT INTO COMPANY VALUES null,’test’

HSQLDB 2.1和更高版本的更新: 已添加了一项功能来支持此功能。

CREATE SEQUENCE SEQU
CREATE TABLE company ( id bigint GENERATED BY DEFAULT AS SEQUENCE SEQU PRIMARY KEY, name varchar(128) NOT NULL CHECK (name <> '') );

请参见《创建表》下的《指南》http://hsqldb.org/doc/2.0/guide/databaseobjects-
chapt.html#dbc_table_creation

此外,2.1和更高版本具有PostgreSQL兼容模式,在该模式下,它接受PostgreSQL CREATE
TABLE语句,该语句引用DEFAULT子句中的序列并将其转换为HSQLDB语法。



 类似资料:
  • 我有以下hsqldb数据库: 我需要添加条目,只有当它们在表中不存在时。我希望在一个步骤中完成这项工作(而不是通过选择步骤来确定条目是否在表中,如果不是这样,则通过第二个步骤插入) hsqldb对此具有合并操作。然而,问题是我有一个id-IDENTITY列,hsqldb应该自动负责设置值,我不知道如何告诉合并操作。 这可以工作,但我必须给出id(3),我需要由hsqldb自动设置id(就像上面的插

  • 问题内容: 我已经从源代码构建了OpenSSL(一个有意的旧版本;使用来构建),并且更愿意使用我所构建的内容,而不用链接到我的程序。 失败的命令是: 并且我收到一系列类似于以下的错误: 这使我认为我的OpenSSL有点时髦。如果我从命令中省略,则错误变为无法执行以下操作: 我是否编译不正确的OpenSSL?还是我应该如何最好地解决这个问题? 问题答案: 愚蠢的“ Linux-isms”再次罢工!很

  • 我在JavaFX应用程序中使用MVP。 资源: 控制器: 看法 在我的InfoStageView中,只需初始化我的标签和样式我的视图。 如何将我的超链接绑定到我的标签。我尝试了一些方法,但没有成功。我的StringProperty不可点击,但很容易绑定。 我的目标:我想打开带有链接的浏览器。

  • 我正在尝试使用Swing发出文件传输通知。这个想法是,当我的应用程序通过网络提供文件时,用户会收到一个,询问他或她是否想接受所述文件报价,如果他们的答案是是,我想打开一个,以便他们可以浏览到他们想要保存文件的位置。 我遇到的问题是两者单独工作都很好,但是当我设置它们以便打开我的应用程序死锁时。 有人知道这里出了什么问题吗?我尝试了调试,但没有发现任何奇怪的行为来表明它为什么会死锁。 编辑:下面的示

  • 我正在将Code::Blocks IDE(v13.12)与GNU GCC编译器一起使用。 我想使用链接器链接我的程序所需的运行库的静态版本,我可以怎么做 我已经知道我的可执行文件的大小会增加,你能告诉我其他的缺点吗 在Visual C Express中执行此操作怎么样

  • 问题内容: 我在main.storyboard上创建了一个UI元素,需要隐藏该元素,直到游戏结束,并且一旦玩家点击屏幕将其关闭即可。Main.storyboard链接到GameViewController,因此我所有的IBOutlet和IBActions都在其中,而我所有的游戏代码都在GameScene中。我如何将视图控制器链接到场景,以便弹出图像和按钮仅在游戏结束时出现。非常感谢您的帮助,我已经