繁体   English   中英

插入和返回多个值 SQL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM