Ein Lock ist immer dann notwendig, wenn zwischen zwei oder mehr gekoppelten Aktionen ein Konsistenzwechsel der Daten stattfinden könnte.
Anders formuliert, wenn eine Transaktion erforderlich ist und das RDBMS diese als Objekt nicht kennt, dann lockt man.
Der Fragesteller hat übrigens einige Counter (BTW - DOPPELPOSTING!), bei denen er sicherstellen möchte, dass es keine Dubletten (und mglw. auch keine Lücken) geben darf.