sql >> Database >  >> RDS >> PostgreSQL

postgresql - geheel getal buiten bereik

SERIAL kolommen worden opgeslagen als INTEGER s, waardoor ze een maximale waarde van 2-1 krijgen. Dus na ongeveer 2 miljard invoegingen, uw nieuwe id waarden passen niet meer.

Als u tijdens de levensduur van uw tafel zoveel invoegingen verwacht, maakt u deze aan met een BIGSERIAL (intern een BIGINT , met een maximum van 2-1).

Als je later ontdekt dat een SERIAL niet groot genoeg is, kunt u een bestaand veld vergroten met:

ALTER TABLE raw ALTER COLUMN id TYPE BIGINT;

Let op:het is BIGINT hier, in plaats van BIGSERIAL (aangezien series geen echte typen zijn ). En houd er rekening mee dat, als je daadwerkelijk 2 miljard records in je tabel hebt, dit even kan duren...




  1. PHP + MySQL:verschil tussen gebufferde en niet-gebufferde zoekopdrachten

  2. Laat nummer beginnen met NUL wanneer opgeslagen in mysql integer veld

  3. SQL gebruiken als een xlookup

  4. MySQL-gegevensbestand krimpt niet