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