1

我正在尝试将生成的 id 返回到一个变量中,以便我可以使用它在其他表中插入引用的值。

当我删除 'INTO foo_id_0' 部分时,错误不会出现。但这对于我想要做的事情来说是必不可少的。

我究竟做错了什么?

CREATE TABLE IF NOT EXISTS bar(
    foo_id SERIAL UNIQUE,
    one VARCHAR(20) NOT NULL UNIQUE,
    two VARCHAR(60) NOT NULL,
    
    CONSTRAINT pk_foo_id PRIMARY KEY (foo_id)
);


INSERT INTO foo(foo_id, one, two) VALUES 
(DEFAULT, 'green' , 'blue' ) ON CONFLICT ON CONSTRAINT pk_foo_id DO NOTHING RETURNING foo_id INTO foo_id_0;


ERROR:  syntax error at or near "INTO"
LINE 11: ...ONSTRAINT pk_foo_id DO NOTHING RETURNING foo_id INTO foo_...
                                                            ^
4

1 回答 1

0

那是因为您需要引用VARCHAR列值,例如

INSERT INTO foo(foo_id, one, two) VALUES (DEFAULT, 'green', 'blue')
ON CONFLICT ON CONSTRAINT pk_foo_id DO NOTHING RETURNING foo_id;
于 2020-11-23T21:00:49.313 回答