Entendamos entonces un par de cosas:
1) En Oracle es perfectamente posible crear un ID que se incremente, y usarlo sobre una tabla, pero es parte de la estructura de la tabla como los auto_increment. Se denominan SEQUENCES, y son objetos que se crean para fines como esos en la base. Simplemente que para usarlo hay que incluirlo dentro del INSERT.
2) Cuando dices "actualizar", sigue sin ser claro si te refieres: a) Insertar un nuevo registro con datos a una tabla; b) Actualizar un valor de un campo en un registro dato (para lo cual deben tener cómo identificar ESE registro) o c) Remplazazr parcialmente el contenido de un campo (lo que nos has dicho hasta ahora).
Yendo al punto 1, lo puedes ver en el manual de referencia de Oracle (siempre usa los manuales, es importantísimo):
CREATE SEQUENCE
Simplemente cras una sequence que te sirva, y luego la usas exclusivamente para esa tabla. Y digo que EXCLUSIVAMENTE, porque al ser un objeto NO dependiente de las tablas, cualquier uso de la misma en forma accidental afectará el valor siguiente.
Código SQL:
Ver originalCREATE SEQUENCE mytable_seq
START WITH 1
INCREMENT BY 1
NOCACHE
NOCYCLE;
Luego en un INSERT la puedes usar directamente:
Código SQL:
Ver originalINSERT INTO mytable(id, campo1, campo2)
VALUES(mytable_seq.NEXTVAL, 'valor1', 'valor2');;
Para el segundo caso, ¿podrías ejemplificarnos lo que intentas hacer con datos que sean reales, así se entiende mejor la idea de lo que intentas?
Por su lado, te recomiendo que tengas en cuenta que una tabla de accesos requiere siempre historicidad, algo que sirva para auditar, y NUNCA se recomienda soreescribir un mismo registro. Pierdes trazabilidad de acciones.