0

我有这种情况:

我有一个名为的表Airports,它需要有一组航空公司,代表哪些航空公司在所述机场有航班。自然,我希望此类数组的每个值都与现有航空公司相匹配。

有没有办法使用数组来完成这个?如果是这样,那么干净的方法是什么?

4

1 回答 1

0

我找到了解决这个问题的方法,使用一个存储函数来检查数组中的每个元素是否与已经存在的航空公司相对应。

在代码中

-- tipo para aeropuerto
create type taeropuerto as (
    nombre varchar(90),
    ubicacion tubicacionAeorpuerto,
    medidas tmedidasPista,
    aerolineas oid[]
);

-- Aerolineas
create type taerolinea as (
    nombre varchar(100)
);

-- tabla correspondiente
create table aerolinea of taerolinea
(primary key(oid))
with oids;
-- function para chequear que cada aerolinea insertada sea correcta
create or replace function check_aerolineas(aerolineas oid[]) returns boolean as 
$$
declare
    aerolineas_tbl record;
    o oid;
    valido boolean;
begin
    valido = true;
    foreach o in array aerolineas loop
        valido = valido and (o in (select oid from aerolinea));
    end loop;
    return valido;
end;
$$ language plpgsql;

create table aeropuerto of taeropuerto (
    constraint aerolineas_check check(check_aerolineas(aerolineas))
);

这样,每次插入或更新机场时,都会检查航空公司。如果阵列中不存在航空公司则失败

于 2018-05-07T00:38:44.140 回答