gpt4 book ai didi

postgresql - 默认设置对自身的引用

转载 作者:行者123 更新时间:2023-11-29 13:27:23 25 4
gpt4 key购买 nike

假设我的表格是这样的:

user( id SERIAL PRIMARY KEY, 
name TEXT, root_id INTEGER NOT NULL
(foreign key to user.id) )

我想要实现的是自动为 root_id 分配与主键相同的值。

不能使用这个表达式

DEFAULT id

“不能在默认表达式中使用列引用”

所以我接下来尝试了这种方法:

DEFAULT CURRVAL('user_id_seq')

但随后我得到:“序列“user_id_seq”的当前值尚未在此 session 中定义”

当然,我可以定义一个触发器函数并在插入之前运行它...但也许您可以建议一些更简洁的解决方案?

最佳答案

这在我的 9.1 测试中有效,不确定为什么你尝试使用 DEFAULT currval('user_id_seq') 失败了..?

CREATE TABLE "user" (
"id" SERIAL,
"name" TEXT,
"root_id" INTEGER NOT NULL DEFAULT currval('user_id_seq'),
CONSTRAINT "user_pkey" PRIMARY KEY ("id")
) WITH (OIDS=FALSE);

然后我查了一下

INSERT INTO "user" ("name") VALUES('mike') RETURNING *;

id | name | root_id
----+------+---------
1 | mike | 1
(1 row)

关于postgresql - 默认设置对自身的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31340923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com