0
我有两个MonetDB表使用自动增量来为每一行生成唯一的ID。在孩子表的每一行指的是一个排的父表(造型1:N的关系):如何在MonetDB中正确实现AUTO_INCREMENT?
CREATE SEQUENCE "test"."seq_parent" as integer START WITH 1;
CREATE TABLE "test"."parent" (
"id" INT NOT NULL DEFAULT next value for "test"."seq_parent",
"name" STRING,
PRIMARY KEY ("id")
);
CREATE SEQUENCE "test"."seq_child" as integer START WITH 1;
CREATE TABLE "test"."child" (
"id" INT NOT NULL DEFAULT next value for "test"."seq_child",
"parent_id" INT NOT NULL,
"name" STRING,
PRIMARY KEY ("id")
);
当我输入(父母,child_1,...,child_n)元组到该数据库,我首先需要INSERT
父母,然后INSERT
所有使用我刚刚创建的父母的ID的孩子。
现在的问题是:如何获得我刚才的行的ID INSERTed
?在MySQL中,这有LAST_INSERT_ID()
。但是,我在MonetDB中找不到像这样的东西。
我试过SELECT next value for "test"."seq_parent"
,它给出了一个ID,但同时增加了序列。在执行INSERT
之后,我也尝试了SELECT MAX("id") FROM "test"."parent"
,但是如果连接了另一个客户端,并且同时将数据插入到父表表中,则它会中断。
在我的情况下,问题确实可以通过应用程序代码和MonetDB序列的组合来解决。有时候没有看到明显的解决方案。感谢您指出这一点! – dasup