Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come incrementare automaticamente un varchar

  1. L'idea nella progettazione del database è di mantenere ogni elemento di dati separato. E ogni elemento ha il proprio tipo di dati, vincoli e regole. Quel c0002 non è un campo, ma due. Lo stesso con XXXnnn o altro. Non è corretto e limiterà notevolmente la tua capacità di utilizzare i dati e di utilizzare le funzionalità e le strutture del database.

    Suddividilo in due elementi di dati discreti:
    column_1 CHAR(1)
    column_2 INTEGER

    Quindi imposta AUTOINCREMENT su column_2

    E sì, la tua chiave primaria può essere (column_1, column_2) , quindi non hai perso alcun significato c0002 ha per te.

  2. Non inserire mai fornitori e clienti (qualunque cosa significhi "c" e "s") nella stessa tabella. Se lo fai, non avrai una tabella di database, avrai un file flat. E vari problemi e limitazioni conseguenti.

    Ciò significa, Normalizza i dati. Ti ritroverai con:

    • una tabella per Person o Organisation contenente i dati comuni (Name, Address ...)
    • una tabella per Customer contenente dati specifici del cliente (CreditLimit ...)
    • una tabella per Supplier contenente dati specifici del fornitore (PaymentTerms ...)
    • nessuna colonna ambigua o facoltativa, quindi nessun Null
    • nessuna limitazione all'uso o alle funzioni SQL
      .

    E quando devi aggiungere colonne, lo fai solo dove è richiesto, senza intaccare tutte le altre cause del flat file. La portata dell'effetto è limitata alla portata della modifica.