У меня есть несколько таблиц в моей базе данных postgres, и некоторые из них наследуются друг от друга.
Например:
CREATE TABLE parent_table(parent_table_id SERIAL PRIMARY KEY,
my_col1 VARCHAR(16) NOT NULL,
my_timestamp TIMESTAMP WITH TIME ZONE NOT NULL);
CREATE TABLE child_table() INHERITS (parent_table);
CREATE TABLE step_child_table() INHERITS (parent_table);
У меня есть триггер, который позволяет мне выполнить вставку parent_table, а затем выяснить, действительно ли данные должны идти в дочернюю таблицу или таблицу step_child.
например:
CREATE OR REPLACE FUNCTION my_parent_trigger() RETURNS TRIGGER AS $$
BEGIN
IF (NEW.my_col1 > 100) THEN
INSERT INTO child_table(my_col1, my_timestamp) VALUES (NEW.my_col1, NEW.my_timestamp);
ELSE
INSERT INTO step_child_table(my_col1, my_timestamp) VALUES (NEW.my_col1, NEW.my_timestamp);
END IF;
RETURN NULL;
END;
$$
CREATE TRIGGER my_trigger BEFORE INSERT ON parent_table FOR EACH ROW EXECUTE PROCEDURE my_parent_trigger();
Проблема в том, что мои индексы увеличиваются на 2. Если я вставляю некоторые данные и делаю выборку на parent_table, я вижу, что мои индексы начинаются с 2 и переходят к 4, 6, 8, 10, .. Если я сделаю выборку в child_table, я увижу свои индексы (скажем, 2, 8 и 10), а остальные будут в другой таблице.
Почему это? Есть ли способ, которым я могу остановить это? Триггер настроен ДО вставки, поэтому я не понимаю, почему последовательный будет увеличен в два раза.
Имеет ли это значение?
Заранее спасибо.