Как проверить новое значение со всеми записями из другой таблицы в PostegreSQL? - PullRequest
0 голосов
/ 03 июня 2019

Мне нужна триггерная функция, которая проверяет, существует ли новое значение (только для одного столбца) в другом столбце другой таблицы.

В основном у меня есть таблица: netgeo_cable_test, где я хочу проверить, существует ли новое значение, вставленное в столбец geom в столбце geom из таблицы netgeo_point_tech.

Я хотел попробовать цикл как массив, но результат из SELECT это не массив.

Я не знаю, как это сделать, чтобы можно было проверять каждую запись из столбца.

1 Ответ

1 голос
/ 03 июня 2019

Попробуйте выполнить следующие действия в соответствии с вашими потребностями:

CREATE OR REPLACE FUNCTION insert_records_netgeo_cable_test(
    _geom text
    , _fld2 text
    , _fld3 text
)
RETURNS boolean AS
$func$
DECLARE
    /* _testCond int; */
    _sql   text := 'INSERT INTO netgeo_cable_test (geom, fld2, fld3)
        VALUES($1, $2, $3)'; -- PREPARED SQL
BEGIN
    /* SELECT COUNT(*) INTO _testCond FROM netgeo_point_tech WHERE geom = $1;
    ### IF _testCond == 0 THEN */
    IF EXISTS (SELECT 1 FROM netgeo_point_tech WHERE geom = $1) THEN
        EXECUTE _sql
            USING   $1, $2, $3; -- EXECUTE PREPARED SQL Wt VALUES
        RETURN true;  -- boolean!
    ELSE
        RETURN FALSE; -- boolean for failed test Cond
    END IF;
 RAISE NOTICE 'sql: %', _sql;

 END
 $func$  LANGUAGE plpgsql;

Надеюсь, что это поможет для получения дополнительной информации см. Ниже [https://dba.stackexchange.com/questions/159424/how-to-use-function-parameters-in-dynamic-sql-with-execute]

...