Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como incrementar automaticamente um varchar


  1. A ideia no design de banco de dados é manter cada elemento de dados separado. E cada elemento tem seu próprio tipo de dados, restrições e regras. Esse c0002 não é um campo, mas dois. O mesmo com XXXnnn como queiras. É incorreto e limitará severamente sua capacidade de usar os dados e usar os recursos e recursos do banco de dados.

    Divida-o em dois itens de dados discretos:
    column_1 CHAR(1)
    column_2 INTEGER


    Em seguida, defina AUTOINCREMENT em column_2

    E sim, sua chave primária pode ser (column_1, column_2) , então você não perdeu o significado c0002 tem para você.

  2. Nunca coloque fornecedores e clientes (seja qual for o significado de "c" e "s") na mesma tabela. Se você fizer isso, você não terá uma tabela de banco de dados, você terá um arquivo simples. E vários problemas e limitações decorrentes disso.

    Isso significa normalizar os dados. Você vai acabar com:
    • uma tabela para Person ou Organisation contendo os dados comuns (Name, Address ...)
    • uma tabela para Customer contendo dados específicos do cliente (CreditLimit ...)
    • uma tabela para Supplier contendo dados específicos do fornecedor (PaymentTerms ...)
    • sem colunas ambíguas ou opcionais, portanto, sem Nulos
    • sem limitações de uso ou funções SQL
      .

    E quando você precisar adicionar colunas, faça isso apenas onde for necessário, sem afetar todos os outros processos do arquivo simples. O escopo do efeito é limitado ao escopo da mudança.