Re: PostgreSQL native from Phil Ide
Posted: Wed Sep 20, 2017 2:14 pm
And, Phil is on facebook..
Donnay Software Web Forums
http://bb.donnay-software.com/Donnay/
http://bb.donnay-software.com/Donnay/viewtopic.php?f=7&t=2160
why he´s out programming?bwolfsohn wrote:And, Phil is on facebook..
hz_scotty wrote:Look in your .ZIP - there are ?????~1 Files
what is the right Filename?
Code: Select all
cQuery := "CREATE TABLE " + xtab + " ( "
i := 1
aStrut := DBSTRUCT()
FOR i = 1 TO LEN( aStrut )
cQuery += aStrut[ i, 1 ]
DO CASE
CASE aStrut[ i, 2 ] = "C"
cQuery += " character(" + ALLTRIM( STR( aStrut[ i, 3 ] ) ) + "), "
CASE aStrut[ i, 2 ] = "N"
cQuery += " numeric(" + ALLTRIM( STR( aStrut[ i, 3 ] ) ) + ',' + ALLTRIM( STR( aStrut[ i, 4 ] ) ) + "), "
CASE aStrut[ i, 2 ] = "D"
cQuery += " date, "
CASE aStrut[ i, 2 ] = "M"
IF ::lBlob = .T.
cQuery += " bytea, "
ELSE
cQuery += " text, "
ENDIF
CASE aStrut[ i, 2 ] = "L"
cQuery += " boolean, "
CASE aStrut[ i, 2 ] = "V" // store as HEX String
cQuery += " bytea, "
ENDCASE
NEXT
// add "internal" Fields
//
cQuery += " __deleted boolean NOT NULL DEFAULT false, "
cQuery += " __record serial NOT NULL, "
cQuery += " __rowversion integer NOT NULL DEFAULT 0, "
cQuery += " __keyversion integer NOT NULL DEFAULT 0, "
cQuery += " __lock_owner integer NOT NULL DEFAULT 0, "
// Alaska have this
//
// CONSTRAINT artikel_pkey PRIMARY KEY (__record)
//
cQuery += " CONSTRAINT " + xtab + "_pkey PRIMARY KEY (__record)"
cQuery += " )" // NEED
Code: Select all
//
// if ISAM Stuff
//
IF lAlaskaPGDBE = .T.
cQuery := "CREATE TRIGGER " + xtab + "_isam_rowversion AFTER UPDATE ON " + ;
xtab + " FOR EACH ROW EXECUTE PROCEDURE isam_rowversion_update()"
oPG:exec( cQuery )
IF ResultStatus( oPG, oMain )
ENDIF
cQuery := "CREATE TRIGGER " + xtab + "_isam_tablemeta AFTER INSERT OR UPDATE OR DELETE ON " + ;
xtab + " FOR EACH ROW EXECUTE PROCEDURE isam_tablemeta_update()"
oPG:exec( cQuery )
IF ResultStatus( oPG, oMain )
ENDIF
ENDIF
Auge_Ohr wrote:hi,
i say your "Import" to PostgreSQL. it does not include Memo/Blob so i can't identify what Type is using.
i recommend to use Alaska PostgreSQL Type ... and "internal" Fields to be compatible to Xbase++ v2.x
also missing : Trigger for Update / DeleteCode: Select all
cQuery := "CREATE TABLE " + xtab + " ( " i := 1 aStrut := DBSTRUCT() FOR i = 1 TO LEN( aStrut ) cQuery += aStrut[ i, 1 ] DO CASE CASE aStrut[ i, 2 ] = "C" cQuery += " character(" + ALLTRIM( STR( aStrut[ i, 3 ] ) ) + "), " CASE aStrut[ i, 2 ] = "N" cQuery += " numeric(" + ALLTRIM( STR( aStrut[ i, 3 ] ) ) + ',' + ALLTRIM( STR( aStrut[ i, 4 ] ) ) + "), " CASE aStrut[ i, 2 ] = "D" cQuery += " date, " CASE aStrut[ i, 2 ] = "M" IF ::lBlob = .T. cQuery += " bytea, " ELSE cQuery += " text, " ENDIF CASE aStrut[ i, 2 ] = "L" cQuery += " boolean, " CASE aStrut[ i, 2 ] = "V" // store as HEX String cQuery += " bytea, " ENDCASE NEXT // add "internal" Fields // cQuery += " __deleted boolean NOT NULL DEFAULT false, " cQuery += " __record serial NOT NULL, " cQuery += " __rowversion integer NOT NULL DEFAULT 0, " cQuery += " __keyversion integer NOT NULL DEFAULT 0, " cQuery += " __lock_owner integer NOT NULL DEFAULT 0, " // Alaska have this // // CONSTRAINT artikel_pkey PRIMARY KEY (__record) // cQuery += " CONSTRAINT " + xtab + "_pkey PRIMARY KEY (__record)" cQuery += " )" // NEED
Code: Select all
// // if ISAM Stuff // IF lAlaskaPGDBE = .T. cQuery := "CREATE TRIGGER " + xtab + "_isam_rowversion AFTER UPDATE ON " + ; xtab + " FOR EACH ROW EXECUTE PROCEDURE isam_rowversion_update()" oPG:exec( cQuery ) IF ResultStatus( oPG, oMain ) ENDIF cQuery := "CREATE TRIGGER " + xtab + "_isam_tablemeta AFTER INSERT OR UPDATE OR DELETE ON " + ; xtab + " FOR EACH ROW EXECUTE PROCEDURE isam_tablemeta_update()" oPG:exec( cQuery ) IF ResultStatus( oPG, oMain ) ENDIF ENDIF