我想要一个upsert功能来返回该行的(新/现有)id。
链接到我之前的问题。我之前询问过规则postgres create rule on insert do nothing if exists insert otherwise; RETURNING id,但似乎不可能。
所以我诉诸触发器
CREATE OR REPLACE FUNCTION upsert_asset() RETURNS trigger AS $trigger_bound$
BEGIN
INSERT INTO asset(symbol, name, type, status)
VALUES (NEW.symbol, NEW.name, NEW.type, NEW.status)
ON CONFLICT (symbol) DO UPDATE SET symbol = EXCLUDED.symbol;
RETURN NEW;
END;
$trigger_bound$
LANGUAGE plpgsql;
CREATE OR REPLACE TRIGGER upsert_asset_trigger
AFTER INSERT ON asset
FOR EACH ROW
EXECUTE PROCEDURE upsert_asset();
我对以上内容进行了测试并起作用。所以我的问题是
谢谢