Ja, geht alles nachträglich.
Und, nicht verwechseln. Der PRIMARY ist ein KEY (unique - kann Zahl oder Zeichen sein), mehr nicht. Der zählt nicht von alleine.
PRIMARY + Auto_Increment ist das, was man normalerweise für eine ID nutzt (alt Typ dann INT oder einen der kleineren Versionen, z.B. MEDIUMINT), also Haupt-KEY + automatische, fortlaufende Zählung.
Also wie gesagt, entweder
ID mit PRIMARY + Auto_Increment (Spaltentyp INT oder dergleichen - jedenfalls nummerisch)
URL mit unique-Index (Spalten-Typ: VARCHAR)
oder (wenn ohne ID)
URL mit PRIMARY (Spalten-Typ: VARCHAR)
Auf die URL gehört kein Auto_Increment, da es eben keine Zahl ist, die hochgezählt werden kann
Und, auch nicht verwechseln oder falsch verstehen. Der Auto_Increment liefert Dir nicht die Anzahl der Einträge bzw. kann man sich darauf nicht verlassen!
Beispiel:
Insert 1
ID -> 1
nächster Insert
ID -> 2
nächster Insert
ID -> 3
nächster Insert
ID -> 4
Der Auto_Increment zählt also selbst hoch. Doch beachte !!
DELETE für ID 2
Wenn nun wieder ein Insert kommt, dann geht es mit ID 5 weiter, also fortlaufend ab der letzten verwendeten Nummer, auch wenn dazwischen welche gelöscht wurden oder die letzte selbst. Das ist der Sinn der Sache.
Somit ist die ID zwar 5, aber es sind nur 4 Datensätze, nämlich 1, 2, 3 und 5 (4 wurde gelöscht).
Löscht man nun auch ID 2, 3 und 5, dann bleibt nur noch die 1 übrig.
Führt man dann wieder einen Insert durch, dann wird die 6 vergeben, da die letzte verwendete die 5 war.
Wenn Du die Anzahl der Datensätze haben willst, dann mach ein "SELECT COUNT(id) AS anzahl FROM ...", das liefert dann die Anzahl.
Anzahl ist count()
Auto_Increment ist nur ein fortlaufender Zähler, eben wie ein Besucherzähler. Wenn der bei 2000 steht heißt das auch noch nicht, dass 2000 jetzt gerade auf der Seite sind, nur, dass sie da waren.