PostgreSQL "function" vorhanden ? [erledigt]

Hier dreht es sich um den PostGre Server

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

PostgreSQL "function" vorhanden ? [erledigt]

Beitrag von AUGE_OHR »

hi,

ich erstelle pgDBE gerecht beim Import auch die "Trigger". Diese verwendet eine "function"

Code: Alles auswählen

cQuery := "CREATE TRIGGER " + xtab + "_isam_rowversion AFTER UPDATE ON " + ;
          xtab + " FOR EACH ROW EXECUTE PROCEDURE isam_rowversion_update()"
auf einem PostgreSQL Server der nicht per DbfUpsize.EXE "behandelt" wurde existiert aber keine solche "function".

Frage : wie kann ich "feststellen", vor dem "CREATE" ob eine "function" auf dem Server existiert ?
Zuletzt geändert von AUGE_OHR am Mo, 01. Okt 2012 22:56, insgesamt 1-mal geändert.
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: PostgreSQL "function" vorhanden ?

Beitrag von brandelh »

so wie du in den Systemtabellen nach indexen forschen kannst, müsste es auch eine Tabelle mit hinterlegten Funktionen geben.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: PostgreSQL "function" vorhanden ?

Beitrag von AUGE_OHR »

brandelh hat geschrieben:so wie du in den Systemtabellen nach indexen forschen kannst, müsste es auch eine Tabelle mit hinterlegten Funktionen geben.
"Systemtabellen" ... das ist das Stichwort, Danke .
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: PostgreSQL "function" vorhanden ?

Beitrag von AUGE_OHR »

hi,

DbfUpSize.EXE legt im System Catalog Trigger "function" an. so kann ich abfragen ob die vorhanden sind und ggf. erstellen.

Code: Alles auswählen

METHOD PGUDialog:Check_ISAM_Trigger()
LOCAL n
LOCAL aTrigger := {}
LOCAL aPGDBE   := {}
LOCAL nPosi
LOCAL cItem
LOCAL nRows

   AADD(aPGDBE,"isam_rowversion_update")  // by DbfUpSize.EXE
   AADD(aPGDBE,"isam_tablemeta_update")   // by DbfUpSize.EXE

   ::cQuery := "SELECT * FROM pg_proc WHERE proname LIKE 'isam%'"

   IF ::oPG:Exec( ::cQuery )
      ::oR_Fields := ::oPG:result
      nRows := ::oR_Fields:rows

      IF nRows > 0
         ::OutMsg( STR( nRows ) + " Trigger: " )

         FOR n := 1 TO nRows
            cItem := ::oR_Fields:GetValue( n - 1, 0 )
            ::OutMsg( cItem )
            AADD(aTrigger, cItem )
         NEXT
         ::OutMsg( CRLF, .F. )

         n := 1
         FOR n := 1 TO LEN(aPGDBE)
            cItem := aPGDBE[n]
            nPosi := ASCAN(aTrigger,{|x| x = cItem })
            IF nPosi > 0
               // found, do nothing 
            ELSE
               DO CASE
                  CASE n = 1 ; ::Create_ISAM_Rowversion()
                  CASE n = 2 ; ::Create_ISAM_Tablemeta()
               ENDCASE
            ENDIF
         NEXT

      ELSE
         ::Create_ISAM_Rowversion()
         ::Create_ISAM_Tablemeta()
      ENDIF
   ENDIF
RETURN
gruss by OHR
Jimmy
Antworten