use transaction to insert list