A ID in the DB is never changed. If you delete one row it is deleted and the other remains unchanged.
Wrong.
This only applies to surrogate Primary Keys (so called anonymous "ID"'s). And even then you can still change them
A primary Key can be anything as long as it is unique to the table resp. the data-model
Think why you can use an email-address ONLY ONCE when you register yourself somewhere. (because an email-address is unique in the whole world).
The same for phonenumbers, Bank-Account-Number and similar
and a primary key can even be a composite key, consisting of 2 or more columns.
A "classic" for something like that scenario would be an "m:m"-relation between two tables, where the two foreign keys in the connecting table can be declared together as Primary Key
Something like a Table "Employees" and a Table "Tasks" --> connecting Table "emp_tasks"
With both Foreign Keys as a composite Primary key, it's not possible to assign a task twice to one and the same employee (which wouldn't make sense)
Bottom Line: If you don't need a surrogate Primary Key, then don't use it!
The only scenario i (usually) use a surrogate key is if that Key is a Foreign Key somewhere else, and my first candidate would be a composite Primary Key.
And if you use Foreign Keys, never ever forget ON UPDATE CASCADE (most people only use ON DELETE CASCADE)
Oh, and FWIW: Don't use the blasted AUTOINCREMENT for Integer Primary Key ("ID") in SQLite. You don't need it.