Jörn Reder > Dimedis-Sql-0.44 > Dimedis::SqlDriver::Pg

Download:
Dimedis-Sql-0.44.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.02   Source  

NAME ^

Dimedis::SqlDriver::Pg - Postgres Treiber für das Dimedis::Sql Modul

SYNOPSIS ^

use Dimedis::Sql;

DESCRIPTION ^

siehe Dimedis::Sql

BESONDERHEITEN DER POSTGRESQL IMPLEMENTIERUNG ^

SERIAL BEHANDLUNG

Der 'serial' Datentyp wird mit Sequences realisiert. Dabei wird für jede Tabelle automatisch eine Sequence verwaltet, deren Name sich wie folgt zusammensetzt:

        ${table}_SEQ

Wenn die Sequence noch nicht existiert, wird sie automatisch angelegt. Die Zählung beginnt dabei mit 100.

Der 'serial' Datentyp muß bei Postgres also als integer angelegt werden.

Es gibt zwar auch einen eigenen Datentyp 'serial' in PostgreSQL, der die Serial auch genau über eine Sequence realisiert. Hier wurde aber eine eigene Implementierung vorgenommen, weil diese mit leichten Änderungen von Oracle übernommen werden konnte und das Problemm, "welche ID wurde zuletzt vergeben?", so gleich mit gelöst wurde.

BLOB BEHANDLUNG

Blobs und Clobs werden von Postgres direkt unterstützt, allerdings nicht innerhalb einer Tabelle gespeichert. Stattdessen wird dort eine ObjectID als Integer Wert gespeichert. Beim Anlegen von Blob und Clob Spalten für Postgres müssen diese also als integer Spalten deklariert werden.

Weiterhin muß eine RULE angelegt werden, damit die Blobs beim Löschen aus der Tabelle auch mit gelöscht werden (ähnlich den Triggern bei der Sybase Implementierung):

  create rule "TABELLE_blob_remove" as
      on delete to "TABELLE"
      do select lo_unlink(old.BLOB_SPALTE)

INSTALL METHODE

Für Dimedis::SqlDriver::Pg ist die install Methode leer, d.h. es werden keine Objekte in der Datenbank vorausgesetzt.

USE_DB UND DB_PREFIX METHODE

Beide Methoden sind nicht implementiert, weil PostgreSQL den Wechsel und den Zugriff mehrerer Datenbanken in derselben Connection nicht unterstützt.

AUTOR ^

Jörn Reder, joern@dimedis.de

COPYRIGHT ^

Copyright (c) 2001 dimedis GmbH, All Rights Reserved

SEE ALSO ^

perl(1).

syntax highlighting: