我希望这是一个简单的问题,但遗憾的是,我无法通过谷歌搜索或RTF Ming找到答案。
我想创建一个具有默认值的列,该默认值基于另一个表的第一个id。
类似的事情,不幸的是,它给了我"错误:不能在默认表达式中使用子查询"
ALTER TABLE foobar
ADD COLUMN foo INTEGER DEFAULT (SELECT id FROM blubb LIMIT 1);
问题是,我不能简单地假设"blubb"从0或1开始,我想稍后对其进行CONSTRAINT。
简单答案:使用一个函数。
示例:
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());