БД postgresql 9.1 записывает данные, которые автоматически отправляются с компьютера. Это отлично работает.
У меня есть триггер AFTER INSERT ... FOR EACH ROW - это тоже работает.
Триггер работает, просматривая другую таблицу, и, если в поле есть значение, он срабатывает.
У меня две проблемы -
а. Некоторые машины отправляют более 1 результата. Я использую LIMIT 1 для предотвращения дублирования, и это означает, что я пропускаю данные с машины, которая отправляет более одного результата. Какая альтернатива этому?
б. Некоторые машины используют один и тот же тестовый код, и я не могу найти способ его квалифицировать, чтобы сделать его специфичным для машины в SELECT при использовании значения NEW Вот код
CREATE FUNCTION testcode_matches()
RETURNS TRIGGER as $$
DECLARE
var INTEGER;
name text;
short text;
id integer;
BEGIN
SELECT count("TestID") from testcode WHERE "testcode"."Parameter" = NEW."Parameter" into var;
IF var > 0 THEN
SELECT "TestName", "ShortTestName", "TestID"
from testcode where "Parameter" = NEW."Parameter" Limit 1 into name, short, id;
INSERT INTO finaldata /* various fields */
SELECT /* various fields */ name, short, id
from obx
WHERE "obx"."Parameter" = NEW."Parameter"
LIMIT 1;
END if;
RETURN NEW;
END;
$$ language plpgsql;