David, thanks for the rebuttle. i will continue to use auto generated ids. for now i will just worry about the postgresql and come back to this later b/c i think you are absolutly right about your interface implementation. the thing about it though is that's exactly what DBI/DBD is supposed to do for us. so this really needs to be a modification to it to be done correctly. who is the maintainer of DBI/DBD? i would like to suggest this addition. it could be done in one of two ways: a new function, like get_key(table_name). this then would be outfitted by all the DBDs to implement. differences would be handled by the them, for example in Oracle it looks like according to your (David's) example the argument would be ignored. the other appraoch would be to catch a foo SQL Statement: "SELECT KEY AS keyid FROM table;" such that DBD would do like wise as above, rather than pass it on the the database (obviosuly), but return the result as a [ Row ]. i like the last approach as it sets a precedence. but either way, this would be a great addition to DBI. i imagine some wrinkles might need working out but surely David's right. this can be done. -transami