2010-11-22 119 views
0

我使用PHP & PotgreSQL要使用此活動記錄的實現了PHP的DB, 界面 - >http://www.phpactiverecord.org現在()作爲Postgres的默認值

它是非常有用的,但有一個小的麻煩: 當你定義一個表中的時間戳字段以「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` 

?????被更改爲表名。

for timestamp column此代碼返回''或null(我不確定哪一個)作爲默認值。我如何修改它以返回'now()'或甚至更好 - now()的結果?

(同樣與功能的結果作爲默認值的任何其他列)

提前感謝!

回答

1

使用-E選項運行psql並執行\d my_table以顯示錶格的定義。

psql會顯示它在內部使用的SQL。 這應該給你你需要的一切。

+0

謝謝!這正是我需要的 – Eralde 2010-11-22 15:06:13