now () как значение по умолчанию в postgres - PullRequest
0 голосов
/ 22 ноября 2010

Я использую PHP & PotgreSQL для создания интерфейса для БД, используя эту реализацию Active Record для PHP -> http://www.phpactiverecord.org

Это довольно полезно, но есть небольшая проблема: когда вы определяетеполе метки времени в таблице со значением now () по умолчанию - этот механизм не получает его: - (

SQL, используемый для запроса информации о столбцах, находится здесь:

SELECT 
  a.attname AS field, 
  a.attlen,
 REPLACE
 (
   pg_catalog.format_type(a.atttypid, a.atttypmod), 
   'character varying', 
   'varchar'
 ) AS type,
 a.attnotnull AS not_nullable, 
 i.indisprimary as pk,
 REGEXP_REPLACE
 (
   REGEXP_REPLACE
   (
     REGEXP_REPLACE(s.column_default,'::[a-z_ ]+',''),
     '\'$',''
   ),
   '^\'',''
 ) AS default
 FROM 
   pg_catalog.pg_attribute a
 LEFT JOIN 
   pg_catalog.pg_class c ON(a.attrelid=c.oid)
 LEFT JOIN 
   pg_catalog.pg_index i ON(c.oid=i.indrelid AND a.attnum=any(i.indkey))
 LEFT JOIN 
   information_schema.columns s 
   ON(s.table_name=???? AND a.attname=s.column_name)
 WHERE 
   a.attrelid = (select c.oid from pg_catalog.pg_class c inner join 
   pg_catalog.pg_namespace n on(n.oid=c.relnamespace) where c.relname=?????
   and pg_catalog.pg_table_is_visible(c.oid))
   AND a.attnum > 0
   AND NOT a.attisdropped
 ORDER BY a.attnum`

Значение ????? заменено на имя таблицы.

для столбца метки времени этот код возвращает '' или ноль (я не уверен, какой именно) в качестве значения по умолчанию. Как я могу изменить его для возврата 'now () 'или даже лучше - результат now ()?

(то же самое для любого другого столбца с результатом функции в качестве значения по умолчанию)

Заранее спасибо!

1 Ответ

1 голос
/ 22 ноября 2010

Запустите psql с параметром -E и введите \d my_table, чтобы отобразить определение таблицы.

psql покажет вам SQL, который он использует внутри. Это должно дать вам все, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...