3

一个,我希望,一个简单的问题,我很遗憾找不到谷歌搜索或 RTFMing 的答案。

我想创建一个具有默认值的列,该默认值基于另一个表的第一个 id。

类似的东西,可悲的是给了我“错误:不能在默认表达式中使用子查询”

ALTER TABLE foobar 
      ADD COLUMN foo INTEGER DEFAULT (SELECT id FROM blubb LIMIT 1); 

问题是,我不能简单地假设“blubb”从 0 或 1 开始,我想稍后在它上面加上一个约束。

4

1 回答 1

6

简单的答案:使用函数。

例子:

  CREATE TABLE foo (id serial primary key);

  CREATE OR REPLACE FUNCTION max_foo() RETURNS int LANGUAGE SQL AS
  $$ SELECT max(id) FROM foo; $$;

  CREATE TABLE bar(id int not null default max_foo());
于 2013-11-09T12:50:35.817 回答