NAME
SPOPS::DBI::Pg -- PostgreSQL-specific routines for the SPOPS::DBI
SYNOPSIS
# In your configuration:
'myspops' => {
'isa' => [ qw/ SPOPS::DBI::Pg SPOPS::DBI / ],
# If you have a SERIAL/sequence field, set increment_field to
# true and name the sequence to be used
'increment_field' => 1,
'sequence_name' => 'myseq',
...
},
DESCRIPTION
This just implements some Postgres-specific routines so we can abstract them out.
One of them optionally returns the sequence value of the just-inserted id field. Of course, this only works if you have a the field marked as 'SERIAL' or using a sequence value in your table:
CREATE TABLE my_table (
id SERIAL,
...
)
NOTE: You also need to let this module know if you are using this option by setting in your class configuration the key 'increment_field' to a true value:
$spops = {
myobj => {
class => 'My::Object',
isa => [ qw/ SPOPS::DBI::Pg SPOPS::DBI / ],
increment_field => 1,
...
},
};
METHODS
sql_current_date()
Returns 'CURRENT_TIMESTAMP()', used in PostgreSQL to return the value for right now.
sql_quote( $value, $data_type, [ $db_handle ] )
DBD::Pg
depends on the type of a field if you are quoting values to put into a statement, so we override the default 'sql_quote' from SPOPS::SQLInterface
to ensure the type of the field is used in the DBI->quote call.
The $data_type
should correspond to one of the DBI datatypes (see the file 'dbi_sql.h' in your Perl library tree for more info). If the DBI database handle $db_handle
is not passed in, we try to find it with the class method global_db_handle()
.
pre_fetch_id( \%params )
We only fetch an ID if 'increment_field' is NOT set and 'sequence_name' IS set in the configuration for the SPOPS object. This enables you to retrieve an ID value from a sequence before the insert. Although this should not make any difference to the SPOPS user, it might make a difference to an application so the option is here.
Auto-incrementing fields (represented by a trigger or the 'SERIAL' datatype) are retrieved after the INSERT has been done (see post_fetch_id()
below).
post_fetch_id( \%params )
Retrieve the value just put into the database for the ID field. To use this you must in the configuration for your object set 'increment_field' to a true value and either specify a 'sequence_name' or use the SERIAL-default name of:
<table_name>_<id_field_name>_seq
This is the sequence created by default when you use the 'SERIAL' datatype.
BUGS
None known.
TO DO
Nothing known.
SEE ALSO
COPYRIGHT
Copyright (c) 2001 intes.net, inc.. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHORS
Chris Winters <chris@cwinters.com>