Ruckusing_Adapter_PgSQL_Base::pk_and_sequence_for PHP Method

pk_and_sequence_for() public method

Returns a table's primary key and belonging sequence.
public pk_and_sequence_for ( string $table ) : array
$table string the table name
return array
    public function pk_and_sequence_for($table)
    {
        $sql = <<<SQL
      SELECT attr.attname, seq.relname
      FROM pg_class      seq,
           pg_attribute  attr,
           pg_depend     dep,
           pg_namespace  name,
           pg_constraint cons
      WHERE seq.oid           = dep.objid
        AND seq.relkind       = 'S'
        AND attr.attrelid     = dep.refobjid
        AND attr.attnum       = dep.refobjsubid
        AND attr.attrelid     = cons.conrelid
        AND attr.attnum       = cons.conkey[1]
        AND cons.contype      = 'p'
        AND dep.refobjid      = '%s'::regclass
SQL;
        $sql = sprintf($sql, $table);
        $result = $this->select_one($sql);
        if ($result) {
            return array($result['attname'], $result['relname']);
        } else {
            return array();
        }
    }