Функция триггера не вставляет все записи в таблицу data_sync_datahistory с application_name = 'dibpos_offline'

Я работаю над триггерной функцией PostgreSQL для регистрации изменений в таблице data_sync_datahistory при выполнении операций INSERT или UPDATE над другими таблицами. Триггер настроен так, чтобы регистрировать эти изменения только в том случае, если для application_name установлено значение 'dibpos_offline'. Однако я столкнулся с проблемой, когда некоторые записи не вставляются в таблицу data_sync_datahistory, когда в базу данных вставляется несколько записей.

Вот моя функция запуска:

IF current_setting('application_name') = 'dibpos_offline' THEN     IF TG_OP = 'INSERT' THEN         INSERT INTO data_sync_datahistory (created, modified, data, source, table_name)         VALUES (CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, ROW_TO_JSON(NEW), 'local', TG_TABLE_NAME);     ELSIF TG_OP = 'UPDATE' THEN         INSERT INTO data_sync_datahistory (created, modified, data, source, table_name)         VALUES (CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, ROW_TO_JSON(NEW), 'local', TG_TABLE_NAME);     END IF; END IF; RETURN NEW; 

А вот соответствующая часть конфигурации моей базы данных:

DATABASES = {     'default': {         'NAME': os.environ.get('DB_NAME', "postgres") if os.environ.get("DB_HOST", None) else os.path.join(Path.home(), 'dibpos.sqlite3'),         'USER': os.environ.get('DB_USER', "postgres"),         'PASSWORD': os.environ.get('DB_PASSWORD', '1234'),         'HOST': os.environ.get('DB_HOST', ''),         'PORT': os.environ.get('DB_PORT', 5432),         'CONN_MAX_AGE': None,         'CONN_HEALTH_CHECK': True,         'OPTIONS': {             'options': '-c application_name=dibpos_offline'         },     } } 

Проблема: Когда в базу данных вставляется несколько записей, некоторые из них не заносятся в таблицу data_sync_datahistory. Похоже, что триггерная функция пропускает некоторые записи.

Вопросы:

  1. Может ли проблема быть связана с конфигурацией базы данных или самой функцией триггера?

  2. Есть ли какие-то общие подводные камни или вещи, которые нужно проверить при использовании триггеров с application_name настройками?

  3. Существует ли способ обеспечить последовательную регистрацию всех записей?

Любой совет или предложение о том, как устранить эту проблему, будет очень признателен!

Вернуться на верх