Eu tenho uma mesa que contém dois tipos de notas. Notas de Cobrança e Notas de Entrega. Eles são estruturas de dados idênticas, portanto, usando a mesma tabela.
CREATE TABLE Notes (
Id int IDENTITY(1,1) NOT NULL,
Type int NOT NULL,
CustomerId int NOT NULL,
-- etc
)
Estou migrando dados de um sistema legado para esta tabela e existe a exigência de que as Notas de Cobrança e Entrega tenham seus próprios números sequenciais.
Eu já havia implementado duas tabelas de sequência como
CREATE TABLE CollectionNoteSequence (
Id int IDENTITY(1,1) NOT NULL,
NoteId int NOT NULL
)
onde a Id
coluna é o ID sequencial exclusivo para notas de coleção e, em seguida, a chave estrangeira NoteId para Notes.Id
.
Está chegando a hora de fazer a migração de dados final (real) e essa configuração parece difícil de trabalhar.
Existe uma maneira de agrupar as duas tabelas de sequência e adicionar um NoteNo
campo à tabela do Notes de forma que NoteNo
seja sequencial dependendo do Note.Type
? Isso é uma chave composta ou algo assim?
A nova tabela pode parecer
CREATE TABLE Notes (
Id int IDENTITY(1,1) NOT NULL,
NoteNo int NOT NULL,
Type int NOT NULL,
CustomerId int NOT NULL,
-- etc
)
e os dados ficariam assim:
Id NoteNo Type CustomerId
1 4000 1 123
2 4001 1 456
3 15123 2 789
4 4002 1 753
5 15124 2 741
Estou usando o MS SQL Server 2008.