Sicherlich ist das richtig, dass es besser wäre 0 mit zu prüfen, hat aber leider mit dem Fehler nichts zu tun.
Nö. Is Null ist an der Stelle korrekt, da ID=0 ein valider Wert ist.
Wie schaut denn dein Insert-Befehl an der Stelle aus (oder hast Du mehrere)? Du schreibst, dass die Tabelle ein "Archiv" ist, d.h. du schiebst da von einer Tabelle bestehende Datensätze da rein. Wird die ID von der bestehenden Tabelle auch in die neue Tabelle übernommen?