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

SERIE-lignende INT kolonne

Med Informix DBMS ændres SERIE-kolonnen ikke, efter at den er indsat; faktisk, du kan slet ikke opdatere en SERIE-værdi. Du kan indsætte en ny med enten 0 som værdi - i så fald genereres en ny værdi - eller du kan indsætte en anden værdi. Hvis den anden værdi allerede eksisterer, og der er en unik begrænsning, vil det mislykkes; hvis det ikke eksisterer, eller hvis der ikke er nogen entydig begrænsning på den serielle kolonne, så vil det lykkes. Hvis den indsatte værdi er større end den største værdi, der tidligere er indsat, vil det næste tal, der skal indsættes, være et større igen. Hvis det indsatte tal er mindre eller negativt, er der ingen effekt på det næste tal.

Så du kan lave din opdatering uden at ændre værdien - intet problem. Hvis du skal ændre nummeret, skal du lave en sletning og indsæt (eller indsæt og slet), hvor indsættelsen har et nul i sig. Hvis du foretrækker konsistens, og du bruger transaktioner, kan du altid slette, og derefter (gen)indsætte rækken med det samme nummer eller med et nul for at udløse et nyt tal. Dette antager, at du har et programmeringssprog, der kører SQL; Jeg tror ikke, du kan justere ISQL og Perform for at gøre det automatisk.

Så på nuværende tidspunkt kan jeg ikke se problemet på Informix.

Med den passende version af IDS (alt, der understøttes), kan du også bruge SEQUENCE til at styre de indsatte værdier. Dette er baseret på Oracles syntaks og koncept; DB2 understøtter også dette. Andre DBMS har andre tilsvarende (men forskellige) mekanismer til håndtering af de automatisk genererede numre.



  1. Fejl 1148 MySQL Den brugte kommando er ikke tilladt med denne MySQL-version

  2. Oracle XMLTABLE venstre ydre sammenføjning returnerer ikke resultater, når XPath ikke eksisterer

  3. mysql - hvor mange kolonner er for mange?

  4. Hvordan beregner jeg et glidende gennemsnit ved hjælp af MySQL?