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
SPOPS::Key::DBI::Sequence, DBD::Pg, DBI
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>