如何使用 PostgreSQL 中另一个 table 的所有记录测试新值?

How to test a new value with all records from another table in PostegreSQL?

我想要一个触发器函数来测试新值(仅针对一列)是否存在于另一列中的另一列 table。

基本上我有一个 table : netgeo_cable_test 我想测试插入到列 geom 中的新值是否存在于来自 table netgeo_point_tech.

我想尝试像数组一样的循环,但 SELECT 的结果不是数组。

我不知道如何才能测试列中的每条记录。

根据您的需要尝试以下调整:

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(, , )'; -- PREPARED SQL
BEGIN
    /* SELECT COUNT(*) INTO _testCond FROM netgeo_point_tech WHERE geom = ;
    ### IF _testCond == 0 THEN */
    IF EXISTS (SELECT 1 FROM netgeo_point_tech WHERE geom = ) THEN
        EXECUTE _sql
            USING   , , ; -- 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]