Я пишу триггер, приведенный ниже
Когда я вручную вставляю запрос в исходную таблицу, это означает, что report.cpu_utilization_perf мой триггер cpu_current_timestamp_trigger работает нормально. когда я вставляю другую строку в исходную таблицу, мой триггер обновляет строку, столбец имени хоста которой существует в предыдущем.
CREATE OR REPLACE FUNCTION report.cpu_current_uti_insert()
RETURNS trigger AS
$$
BEGIN
IF (SELECT 1 FROM report.cpu_utilization_perf_current_time WHERE hostname = NEW.hostname)
THEN
UPDATE report.cpu_utilization_perf_current_time
SET "timestamp"=NEW.timestamp, cpu_utilization_percentage=NEW.cpu_utilization_percentage
WHERE hostname=NEW.hostname;
RETURN NEW;
ELSE
insert into report.cpu_utilization_perf_current_time (hostname,"timestamp",cpu_utilization_percentage)
VALUES(NEW.hostname,NEW.timestamp,NEW.cpu_utilization_percentage) ;
RETURN NEW;
END IF;
END
$$
LANGUAGE 'plpgsql';
DROP TRIGGER IF EXISTS cpu_current_timestamp_trigger
ON report.cpu_utilization_perf;
CREATE TRIGGER cpu_current_timestamp_trigger
AFTER INSERT
ON report.cpu_utilization_perf
FOR EACH ROW EXECUTE PROCEDURE report.cpu_current_uti_insert();
Когда я запускаю любое пакетное задание Java из 1000 записей, вставьте его. Мой триггер тоже работает нормально.
Но проблема в том, что данные, поступающие из другого источника, например, из пакетного задания сценария оболочки, в исходную таблицу. Мой триггер не работает. Триггер также останавливает вставку записи в исходную таблицу.
когда я сбрасываю данные моего триггера и функции, поступающие из другого источника, работает нормально и вставляю новые строки с интервалом 1 мин.
Пакетное задание сценария оболочки - вставка записи в исходную таблицу с интервалом в 1 минуту. Каждое минимальное задание вставляет новую строку в исходную таблицу.