[英]INSERT and RETURNING multiple values SQL
我有两个关系一对多的表,我希望 INSERT 到mytable
一些值并将多个值返回到变量中以便以后使用它们。 这里的例子:
IF NOT EXISTS
(SELECT id FROM mytable WHERE label_id = xxx)
THEN
INSERT INTO mytable
(label_id, "name")
VALUES
(xxx,'foo'),
(xxx,'bar')
RETURNING
(SELECT id INTO mytable_id1 FROM mytable WHERE name = 'foo'),
(SELECT id INTO mytable_id2 FROM mytable WHERE name = 'bar');
ELSE
(SELECT id INTO mytable_id1 FROM mytable WHERE name = 'foo'),
(SELECT id INTO mytable_id2 FROM mytable WHERE name = 'bar');
END IF;
但我总是出错:
错误:在“进入”处或附近多次指定 INTO
我尝试 google 问题,例如INSERT INTO... RETURNING multiple columns (PostgreSQL)和Error: INTO 在“INTO”或附近指定了不止一次
不幸的是,解决方案对我没有帮助(或者我做错了什么)。 有任何想法吗?
我采取了另一种方式,为每个变量单独设置了一个IF
。 不是很聪明,但它的工作
IF NOT EXISTS
(SELECT id FROM mytable WHERE label_id = xxx and "name"='foo')
THEN
INSERT INTO mytable
(label_id, "name")
VALUES
(xxx,'foo'),
RETURNING
(SELECT id INTO mytable_id1 FROM mytable WHERE name = 'foo');
ELSE
(SELECT id INTO mytable_id1 FROM mytable WHERE name = 'foo');
END IF;
IF NOT EXISTS
(SELECT id FROM mytable WHERE label_id = xxx and "name"='bar')
THEN
INSERT INTO mytable
(label_id, "name")
VALUES
(xxx,'bar'),
RETURNING
(SELECT id INTO mytable_id1 FROM mytable WHERE name = 'bar');
ELSE
(SELECT id INTO mytable_id1 FROM mytable WHERE name = 'bar');
END IF;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.