1 ci sono vari approcci, con oggetti in memoria (se sono piccoli, tipicamente), oppure tabelle temporanee (se son tante)
2 dipende da quale db usi. per mysql c'è l'apposita funzione. in generale comunque è molto meglio avere una chiave primaria "vera" piuttosto che una autoincrementante. per piccoli numeri perfino UUID