sql >> Database teknologi >  >> RDS >> Mysql

Indsæt i et automatisk stigningsfelt

Ok, før du får svaret på dit spørgsmål, er jeg nødt til at advare dig om ekstremt dårlig praksis du prøver at gøre der. Misforstå mig ikke, mange har prøvet at gøre det, du gør, og det er simpelthen ikke sådan, tingene skal fungere.

Dit auto_incremented ID er en primær nøgle. Primær nøgle bruges til entydigt at identificere en række i en tabel. Det er det. Det har ingen anden speciel betydning udover det.

Så hvad betyder det for dig? Det betyder, at din idé om, at du vil "reservere" 1 - 10k til admins, er dårlig. Hvorfor er det dårligt? Fordi du piller ved den primære nøgle. Du bør aldrig beslutte, hvad værdien af ​​den primære nøgle skal være, det er databasers job af mange årsager (konsistens for eksempel). Den anden ting, hvorfor det er dårligt, er, at du har begrænset nogen til kun 10.000 mulige indtastninger. På den anden side, hvordan vil du beregne, hvad den næste post for admins er? Hvad hvis du har indtastet 1, 2, 3, 4 og derefter sletter posten med ID =3? Hvad sker der så? Hvad er din næste værdi i rækkefølgen? 3 eller 5?

Når det er sagt, bør du nok genoverveje din strategi. Hvorfor ikke tilføje et felt "isAdmin", der fortæller dig, om en administrator har postet noget eller ej?




  1. Indeks var uden for rammerne af opstillingen. (Microsoft.SqlServer.smo)

  2. Bedste måde at lave multi-row insert i Oracle?

  3. Mysql - vælg id'er, der matcher alle tags

  4. Hvad skal jeg bruge for at pg_dumpall fungerer uden en adgangskode?