#!/usr/bin/perl use strict; use warnings; use DBI; my @tables = qw(simple complexer); my $dbh=DBI->connect("dbi:Pg:;port=2225","","") or die "Couldn't connect."; foreach my $table (@tables) { my @key_column_names=$dbh->primary_key(undef, "public",$table); print "PK column(s): ", join(", ", @key_column_names), ".\n"; my $sth=$dbh->primary_key_info( undef, "public", $table, {pg_onerow=>2}); if (defined $sth) { my $pk = $sth->fetchall_arrayref()->[0]; print "Table $pk->[2] has a primary key on these columns:\n"; for (my $x=0; defined $pk->[3][$x]; $x++) { print "Column: $pk->[3][$x] (data type: $pk->[6][$x])\n"; } } } $dbh->disconnect();