Столбец «now» не существует postgres django
У меня есть приложение на django, которое хранит колонку даты в модели/таблице в postgres
first_subscribed = models.DateField(auto_now=True)
, и оно работает нормально.
Но если я включаю триггер для копирования данных из таблицы/модели в другую таблицу. Я получаю :
psycopg2.errors.UndefinedColumn: column "now" does not exist
.
Журнал с сервера:
Как будто триггер захватывает новые значения как now::date и это создает ошибку на postgres. Но если я отключу триггер, он работает нормально.
Пожалуйста, может ли кто-нибудь помочь мне понять и исправить это?
В Postgres "сейчас" на самом деле представлено в виде функции now()
. Чтобы получить текущую временную метку, вам нужно сделать что-то вроде v_vigencia_ini := now()::date
Если вы обновите определение триггера, ошибка должна исчезнуть.
Кроме того, если вам нужна текущая дата, вы можете сделать это без необходимости вызывать now()
, и, следовательно, нет необходимости выполнять приведение с помощью ::date
edb_admin=> select CURRENT_DATE;
current_date
--------------
2025-03-13
(1 row)
Таким образом, вы также можете обновить определение триггера с помощью v_vigencia_ini := CURRENT_DATE
, а также
Судя по названию поля, я думал, вы хотели использовать auto_now_add
, а не auto_now
, чтобы теперь дата принималась только при создании строки (а не при обновлении строки). Однако, хотя это может решить вашу проблему, я не могу понять, почему ваш триггер не работал нормально.. пожалуйста, не могли бы вы поделиться своим описанием функции tg_fun_name
.