sql >> Databasteknik >  >> RDS >> Mysql

SERIAL-liknande INT-kolumn

Med Informix DBMS kommer SERIAL-kolumnen inte att ändras efter att den har infogats; Du kan faktiskt inte uppdatera ett SERIE-värde alls. Du kan infoga ett nytt med antingen 0 som värde - i så fall genereras ett nytt värde - eller så kan du infoga något annat värde. Om det andra värdet redan finns och det finns en unik begränsning, kommer det att misslyckas; om det inte finns, eller om det inte finns någon unik begränsning på seriekolumnen, kommer det att lyckas. Om det infogade värdet är större än det största värdet som tidigare infogats, kommer nästa siffra som ska infogas att vara ett större igen. Om siffran som infogas är mindre eller negativ, så har det ingen effekt på nästa nummer.

Så du kan göra din uppdatering utan att ändra värdet - inga problem. Om du behöver ändra numret måste du göra en radera och infoga (eller infoga och radera), där infogningen har en nolla. Om du föredrar konsistens och du använder transaktioner kan du alltid ta bort och sedan (åter)infoga raden med samma nummer eller med en nolla för att utlösa ett nytt nummer. Detta förutsätter att du har ett programmeringsspråk som kör SQL; Jag tror inte att du kan justera ISQL och Perform för att göra det automatiskt.

Så nu ser jag inte problemet på Informix.

Med lämplig version av IDS (allt som helst som stöds) kan du använda SEQUENCE för att styra de infogade värdena också. Detta är baserat på Oracles syntax och koncept; DB2 stöder också detta. Andra DBMS har andra likvärdiga (men olika) mekanismer för att hantera de automatiskt genererade numren.



  1. Parameteriserade frågor PHP/MySQL

  2. Övervaka dina databaser med MySQL Enterprise Monitor

  3. Hur stänger man datakällans anslutning ordentligt?

  4. SQL Slumpmässiga rader i en stor tabell (med where-sats)