2010-11-22 6 views
0

내가 PHP이 액티브 레코드 구현을 사용하여 DB, 위한 인터페이스를 만들기 위해 PotgreSQL PHP &을 사용하고이 포스트 그레스에서 기본값으로 ->http://www.phpactiverecord.org지금()

가있다 그것은 매우 유용하지만, 작은 문제 : 당신이 테이블에 타임 스탬프 필드를 정의 할 때 는 "지금()"기본값으로 -이 엔진이 열에 대한 정보를 조회하는 데 사용

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` 

????? 테이블 이름으로 변경됩니다.

타임 스탬프 열에이 코드는 ''또는 null (어느 것이 확실하지 않습니다)을 기본값으로 반환합니다. 어떻게 수정하여 'now()'또는 더 나은 결과 (now)를 반환 할 수 있습니까? 미리

감사 (디폴트 값 함수 결과 모든 다른 컬럼에 대해 동일)

!

답변

1

psql을 -E 옵션과 함께 실행하고 \d my_table을 실행하여 테이블의 정의를 표시하십시오.

psql이 내부적으로 사용하는 SQL을 보여줍니다. 필요한 모든 것을 제공해야합니다.

+0

감사합니다. 이게 내가 필요한 것일 뿐이야 – Eralde

+0

대답이 맞다면 대답을 수락하시오. –