我想做以下
ALTER TABLE runs ADD COLUMN userId bigint NOT NULL DEFAULT (SELECT id FROM users WHERE email = 'admin@example.com');
但它一直给我语法错误。我怎么能这样做? 任何帮助都非常感谢。 ;)
答案 0 :(得分:10)
试试这个
创建一个函数,以id
作为arg从users
表中获取email
。
CREATE OR REPLACE FUNCTION id_in_users(iemail varchar) RETURNS int LANGUAGE SQL AS
$$ SELECT id FROM users WHERE email = iemail; $$;
并改变表格
ALTER TABLE runs ADD COLUMN userId bigint NOT NULL DEFAULT
id_in_users('admin@example.com');
答案 1 :(得分:3)
你不能在DEFAULT
上这样做。但是,您可以在插入检查之前使用触发器是否存在NULL
值。