Sql 将子查询结果设置为默认值

Sql 将子查询结果设置为默认值,sql,postgresql,subquery,psql,Sql,Postgresql,Subquery,Psql,我想做下一件事: ALTER TABLE bets ADD COLUMN owner_id bigint NOT NULL DEFAULT (SELECT min(user_id) FROM users); 我很困惑postgres不允许将SELECT min(user\u id)从用户子查询的结果保存到一个变量,然后重用它 如何将子查询结果设置为默认值 另外,下注表不是空的这似乎对我有用: create function my_foobar_default(OUT id uuid) as

我想做下一件事:

ALTER TABLE bets 
ADD COLUMN owner_id bigint NOT NULL DEFAULT (SELECT min(user_id) FROM users);
我很困惑postgres不允许将
SELECT min(user\u id)从用户
子查询的结果保存到一个变量,然后重用它

如何将子查询结果设置为默认值


另外,下注表不是空的

这似乎对我有用:

create function my_foobar_default(OUT id uuid)
as 'select id from foobar order by X desc limit 1'
language sql

alter table Y
add column if not exists SOMEVALUE uuid not null default my_foobar_default()

这似乎对我有用:

create function my_foobar_default(OUT id uuid)
as 'select id from foobar order by X desc limit 1'
language sql

alter table Y
add column if not exists SOMEVALUE uuid not null default my_foobar_default()

@你能举个例子吗?应该是哪种触发?问题是
bets
table不为空该字段的默认值是min(user\u id)的用户表是什么?“这对我来说似乎毫无意义。”迈克尔。我需要用一些值初始化
owner\u id
,这些值指向
users
表。但这是一个迁移脚本,我不知道用户id的起始值是多少,但您不是只设置了所有值bets.owner\u id=min(user\u id)?那就是我迷路的地方。min(用户id)是否会更改?我可以看到max(用户id)正在改变。@MichaelZ。是的,
min(user\u id)
可以更改,因为我们使用的是测试环境,生成的用户id可以从测试环境开始1000@jarlh你能举个例子吗?应该是哪种触发?问题是
bets
table不为空该字段的默认值是min(user\u id)的用户表是什么?“这对我来说似乎毫无意义。”迈克尔。我需要用一些值初始化
owner\u id
,这些值指向
users
表。但这是一个迁移脚本,我不知道用户id的起始值是多少,但您不是只设置了所有值bets.owner\u id=min(user\u id)?那就是我迷路的地方。min(用户id)是否会更改?我可以看到max(用户id)正在改变。@MichaelZ。是的,
min(user\u id)
可以更改,因为我们使用的是测试环境,其中生成的用户id可以从1000开始