sql >> Database >  >> RDS >> Mysql

SERIAL-achtige INT-kolom

Met het Informix DBMS verandert de SERIAL-kolom niet nadat deze is ingevoegd; inderdaad, u kunt een SERIAL-waarde helemaal niet bijwerken. U kunt een nieuwe invoegen met ofwel 0 als waarde - in welk geval een nieuwe waarde wordt gegenereerd - of u kunt een andere waarde invoegen. Als de andere waarde al bestaat en er een unieke beperking is, zal dat mislukken; als het niet bestaat, of als er geen unieke beperking is voor de seriële kolom, dan zal het slagen. Als de ingevoegde waarde groter is dan de grootste eerder ingevoegde waarde, zal het volgende in te voegen getal weer één groter zijn. Als het ingevoegde getal kleiner of negatief is, is er geen effect op het volgende getal.

U kunt dus uw update uitvoeren zonder de waarde te wijzigen - geen probleem. Als u het nummer moet wijzigen, moet u verwijderen en invoegen (of invoegen en verwijderen), waarbij het invoegsel een nul bevat. Als u de voorkeur geeft aan consistentie en u transacties gebruikt, kunt u altijd verwijderen en de rij met hetzelfde nummer of met een nul (opnieuw) invoegen om een ​​nieuw nummer te activeren. Dit veronderstelt dat je een programmeertaal hebt die de SQL uitvoert; Ik denk niet dat je ISQL en Perform kunt aanpassen om dat automatisch te doen.

Dus op dit moment zie ik het probleem niet in Informix.

Met de juiste versie van IDS (alles dat wordt ondersteund), kunt u SEQUENCE gebruiken om ook de ingevoegde waarden te beheren. Dit is gebaseerd op de Oracle-syntaxis en het concept; DB2 ondersteunt dit ook. Andere DBMS hebben andere gelijkwaardige (maar andere) mechanismen voor het verwerken van de automatisch gegenereerde nummers.



  1. Hoe pooling van verbindingen voor .NET MySQL Data Connector in IIS te bewaken

  2. ik wil alle namen van managers en hun naam van alle managers vinden in Oracle SQL

  3. een array doorgeven als een parameter die moet worden gebruikt in een SQL-query met behulp van het IN-commando

  4. Hoe zet je een string om in een decimaal?