Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Coluna INT tipo SERIAL


Com o SGBD Informix, a coluna SERIAL não será alterada após ser inserida; na verdade, você não pode atualizar um valor SERIAL. Você pode inserir um novo com 0 como valor - nesse caso, um novo valor é gerado - ou pode inserir algum outro valor. Se o outro valor já existir e houver uma restrição exclusiva, isso falhará; se não existir ou se não houver restrição exclusiva na coluna serial, ela será bem-sucedida. Se o valor inserido for maior que o maior valor inserido anteriormente, o próximo número a ser inserido será um maior novamente. Se o número inserido for menor ou negativo, não haverá efeito no próximo número.

Assim, você poderia fazer sua atualização sem alterar o valor - sem problemas. Se você precisar alterar o número, terá que fazer uma exclusão e inserção (ou inserir e excluir), onde a inserção possui um zero. Se você preferir consistência e usar transações, sempre poderá excluir e (re)inserir a linha com o mesmo número ou com zero para acionar um novo número. Isso pressupõe que você tenha uma linguagem de programação executando o SQL; Eu não acho que você pode ajustar o ISQL e o Perform para fazer isso automaticamente.

Então, neste momento, não vejo o problema no Informix.

Com a versão apropriada do IDS (qualquer coisa que seja suportada), você também pode usar SEQUENCE para controlar os valores inseridos. Isso é baseado na sintaxe e no conceito do Oracle; O DB2 também suporta isso. Outros DBMS têm outros mecanismos equivalentes (mas diferentes) para lidar com os números gerados automaticamente.