代码之家  ›  专栏  ›  技术社区  ›  FBryant87

从自定义声明的类型数组插入到PostgreSQL表中

  •  0
  • FBryant87  · 技术社区  · 8 年前

    我创建了一个自定义类型,如下所示:

    CREATE TYPE employee AS (employee_id INTEGER, name VARCHAR(200), age INTEGER);
    

    然后我创建一个函数,它接收一个此类数组作为参数:

    CREATE FUNCTION insert_office(v_office_id INTEGER, v_office_name VARCHAR(400), v_employees employee[])
    RETURNS void
    AS $BODY$
    
    INSERT INTO office (office_id, office_name)
    VALUES(v_office_id, v_office_name)
    
    --here I need to insert the array of employees (v_employees) into the employees table
    
    $BODY$
    LANGUAGE SQL;
    

    假定已设置Employees表以匹配Employee类型的属性:

    CREATE TABLE employee (employee_id INTEGER, name VARCHAR(200), age INTEGER)
    

    如何简单地将此类型为employee的数组转移到employee表中?尽管尝试了好几次,我还是无法正确地理解语法。(PostgreSQL 9.6)

    1 回复  |  直到 8 年前
        1
  •  1
  •   a_horse_with_no_name    8 年前

    您需要取消对数组元素的连接:

    insert into employees (employee_id, name, age)
    select employee_id, name, age
    from unnest(v_employees);