sql >> Base de Datos >  >> RDS >> Mysql

Columna INT similar a SERIAL

Con Informix DBMS, la columna SERIAL no cambiará después de insertarla; de hecho, no puede actualizar un valor SERIAL en absoluto. Puede insertar uno nuevo con 0 como valor, en cuyo caso se genera un nuevo valor, o puede insertar algún otro valor. Si el otro valor ya existe y hay una restricción única, fallará; si no existe, o si no hay una restricción única en la columna de serie, tendrá éxito. Si el valor insertado es mayor que el valor más grande insertado previamente, entonces el siguiente número que se insertará será uno más grande nuevamente. Si el número insertado es más pequeño o negativo, entonces no hay efecto en el siguiente número.

Entonces, puede hacer su actualización sin cambiar el valor, no hay problema. Si necesita cambiar el número, tendrá que eliminar e insertar (o insertar y eliminar), donde la inserción tiene un cero. Si prefiere la consistencia y usa transacciones, siempre puede eliminar y luego (re)insertar la fila con el mismo número o con un cero para activar un nuevo número. Esto supone que tiene un lenguaje de programación que ejecuta SQL; No creo que puedas modificar ISQL y Perform para hacerlo automáticamente.

Entonces, en este punto, no veo el problema en Informix.

Con la versión adecuada de IDS (cualquiera que sea compatible), también puede usar SEQUENCE para controlar los valores insertados. Esto se basa en la sintaxis y el concepto de Oracle; DB2 también admite esto. Otros DBMS tienen otros mecanismos equivalentes (pero diferentes) para manejar los números generados automáticamente.