是否可以编写一个可以处理多对多连接的postgres函数?

时间:2016-06-23 11:21:57

标签: postgresql function insert many-to-many plpgsql

我有一份工作表。我有一个行业表。通过名为industriesjobs的联接表,工作和行业有很多关系。两个表都有uuid是他们的主键。我的问题是双重的。首先,编写两个函数来插入这样的数据是否可行?如果这是可行的,那么我的第二个问题是如何表达uuid列类型的数组。我不确定语法。

use Symfony\Component\Validator\Constraints as Assert;

class YourEntity
{
    /**
     * @Assert\GreaterThanOrEqual("-100 years")
     */
    protected $date;
}

提前致谢。

1 个答案:

答案 0 :(得分:2)

解决方案的关键是函数unnest()(每个文档):

  

将数组展开为一组行

data-modifying CTE

一个简单的查询完成工作:

$(value).find('input, select').each(function() {
    var id = $(this).attr('id');
    var idArray = id.split("_");
    idArray[5] = 2;
    idArray[7] = (index + 1);
    var newId = idArray.join('_');
    console.log(newId);
    $(this).attr('id', newId);
});

还演示了WITH ins_job AS ( INSERT INTO jobs (organisation, title, address_id) SELECT 'Acme Inc', 'Bomb Tester', '0030cfb3-1a03-4c5a-9afa-6b69376abe2e' -- job-data here RETURNING id ) INSERT INTO industriesjobs (industry_id, job_id) SELECT indid, id FROM ins_job i -- that's a single row, so a CROSS JOIN is OK , unnest('{19c2e0ee-acd5-48b2-9fac-077ad4d49b19 , 21f8ffb7-e155-4c8f-acf0-9e9913257845 , 28c18acd-99ba-46ac-a2dc-59ce952eecf2}'::uuid[]) indid; -- industry IDs here 数组的正确语法。 (元素和分隔符之间的空格是不相关的,而不是双引号内。)

你的一个UUID是一个字符短:
<击> uuid
必须是这样的:
21f8ffb7-e155-4c8f-acf0-9e991325784 - 另外一个角色

如果您需要功能,也可以这样做:

21f8ffb7-e155-4c8f-acf0-9e9913257845

相关: