pk_and_sequence_for(table)
public
Returns a table’s primary key and belonging sequence.
Show source
def pk_and_sequence_for(table)
result = exec_query( SELECT attr.attname, seq.relname FROM pg_class seq INNER JOIN pg_depend dep ON seq.oid = dep.objid INNER JOIN pg_attribute attr ON attr.attrelid = dep.refobjid AND attr.attnum = dep.refobjsubid INNER JOIN pg_constraint cons ON attr.attrelid = cons.conrelid AND attr.attnum = cons.conkey[1] WHERE seq.relkind = 'S' AND cons.contype = 'p' AND dep.refobjid = '#{quote_table_name(table)}'::regclass, 'SCHEMA').rows.first
[result.first, result.last]
rescue
nil
end