2013-09-16 4 views
1

Я получаю сообщение об ошибке, когда триггер запускается и пытается запустить следующую функциюPostgres dblink_exec в функции триггера

CREATE OR REPLACE FUNCTION insert_new_sessions() 
    RETURNS trigger AS 
$$ 
DECLARE 
BEGIN 
SELECT dblink_exec('dbname=billing port=5432','INSERT INTO md.radacct_test(radacctid,acctsessionid,acctuniqueid,username) select New.radacctid,New.acctsessionid,New.acctuniqueid,New.username'); 

    RETURN NULL; 
    EXCEPTION WHEN OTHERS THEN RAISE NOTICE 'insert_new_sessions SQL ERROR: %', SQLERRM; 

    RETURN NULL; 
END; 
$$ LANGUAGE plpgsql; 

Ошибка:

ERROR insert_new_sessions SQL ERROR: missing FROM-clause entry for table "new" 

ответ

1

Потому что у вас есть новые внутри строки , таким образом, интерпретируется как строка? Попробуйте объединить значения NEW.xxx с остальной частью строки. Например. INSERT INTO md.radacct_test(...) SELECT ' || NEW.radacctid ||', ' || NEW.acctsessionid || ', ' || NEW.acctuniqueid || ', ' || quote_nullable(NEW.username));

-1

Я считаю, что ключевые слова OLD и NEW чувствительны к регистру.

+1

Нет, это не так. –

Смежные вопросы