Postgresql 9.1 DB записывает данные, которые автоматически отправляются с машины. Это прекрасно работает.функция триггера postgresql - дубликаты или отсутствующие данные
У меня есть ПОСЛЕ ВСТАВКИ ... ДЛЯ КАЖДОГО СКОРОСТИ ROW - это также работает. Триггер работает, просматривая другую таблицу, и если есть значение в поле, которое он запускает.
У меня есть две проблемы - a. Некоторые машины отправляют более 1 результата. Я использую LIMIT 1 для предотвращения дубликатов, и это означает, что я пропускаю данные с машины, которая отправляет более одного результата. Что является альтернативой этому? b. На некоторых машинах используется один и тот же тестовый код, и я не могу найти способ его отработки, чтобы сделать его конкретным машиной в 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;
Вы ожидали более одного идентификатора из 'от testcode где "Параметр"= NEW "Параметр"' запроса.? В этом случае: LIMIT 1; вызывает случайный идентификатор, который будет извлечен (и вставлен в finaldata). IMHO вы можете поместить все {testcode, obx} в подзапрос и опустить все переменные. Запрос станет простым SQL. ASO: можете ли вы добавить определения таблиц и триггер, сам? – wildplasser
Я получил еще один ответ, который помог мне, но мне интересно узнать о подзапросах. Можете ли вы предложить ссылку для меня, чтобы посмотреть? Сам триггер - Структура триггеров для таблицы «public». «Obx» - ---------------------------- CREATE TRIGGER «finaldata_matches» ПОСЛЕ ВСТАВКИ ON «public». «Obx» ДЛЯ КАЖДОГО РУКА ИСПОЛНИТЕЛЬНАЯ ПРОЦЕДУРА «testcode_matches»(); – user1044111