Ich bin mit PHP & PotgreSQL eine Schnittstelle für einen DB zu machen, diese Active Record-Implementierung für PHP ->http://www.phpactiverecord.orgnow() als Standardwert in Postgres
Es ist sehr nützlich, aber es ist eine kleine Probleme: , wenn Sie ein Zeitstempel-Feld in einer Tabelle mit „now()“ als Standardwert definieren - dieser Motor es nicht bekommen :-(
SQL verwendet, um Informationen über die Spalten abzufragen sind hier:
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`
????? wird in den Tabellennamen geändert.
für Zeitstempel Spalte dieser Code gibt '' oder Null (ich bin mir nicht sicher, welche) als Standardwert. Wie kann ich es ändern, um 'now()' oder noch besser - result of now() zurückzugeben?
(gleiche gilt für jede andere Spalte mit Funktionsergebnis als Standardwert)
Vielen Dank im Voraus!
danke! das ist genau das, was ich brauchte – Eralde
Akzeptiere seine Antwort als Antwort, wenn es deine Antwort war –