Timestamp Probleme

Hallo Leute vom PG-Forum,

vorab PostgreSQL ist für mich absolutes neuland, bisher hatte Ich nur Erfahrung mit MSSQL & MySQL. Also bitte habt Nachsicht mit mir. Zum meinem Problem.

Zu den Technischen Fakten Windows Web Server 2008 R2 & PostgreSQL 9.4 und PHP 5.6

Ich habe ein PHP Script zu Steuerung von Geräten was auf PostgreSQL basiert. Es läuft auch alles gut nur habe Ich in einer Funktion das problem das hier der Timestamp nicht stimmt und hier UTC genommen wird. Ich möchte aber alle Ausgaben in Europe/Berlin haben

Ich habe bereits in der Datenbank die TimeZone festgelegt, auch inder Konfig von PostgreSQL sprich TimeZone = “Europe/Berlin”

Nach einiger Recherche bin ich darauf gestoßen das der Dateityp in dieser Spalte “timestamp without time zone” ist ändern in “timestamp with time zone” geht leider auch nicht weil Ich dann folgenden Fehler bekomme.

SQL-Fehler:

FEHLER:  Typ einer Spalte, die von einer Sicht oder Regel verwendet wird, kann nicht geändert werden
DETAIL:  Regel _RETURN für Sicht device_detailed_view hängt von Spalte „first_activity“ ab

In der Anweisung:
ALTER TABLE "fms"."device_state" ALTER COLUMN "first_activity" TYPE timestamp with time zone

Eine Regel wie beschrieben finde Ich leider jedoch nicht. Ich hoffe ihr könnt mir dazu helfen.

mfg
BastyJuice

Wie ist denn die Tabelle definiert?

Du hast eine View die die Spalte first_activity der Tabelle device_state verwendet. Leider kann man in diesem Fall die Tabelle erst ändern, wenn man alle Views die diese Spalte verwenden gelöscht (DROP VIEW …) hat. Das ist einer der wenigen Punkte die mich bei Postgres dann doch hin und wieder nerven. Oracle’s Lösung die Views als “unusable” zu markieren und mit einem simplen “alter view … compile” wieder zu “fixen” finde ich wesentlich praktischer. Aber wenn man ein sauberes Schema-Management mit den notwendigen Scripten für alle Views hat, ist es bei Postgres auch nicht so schlimm.