Vamos criar um exemplo baseado em uma tabela de pedidos bem simplificada conforme instrução de create abaixo:
Create Table Pedidos
(DataPedido DateTime Not Null,
NroOrdem Int Not Null,
CodCliente Int,
ValorTotal Decimal(11,2),
Desconto Decimal(11,2),
DataEntrega DateTime,
Observacoes Varchar(80),
Primary Key (DataPedido, NroOrdem));
Vamos considerar "quebrar" esta tabela em três novas conforme a data do pedido
- Pedidos até 01/01/2009
- Pedido de 01/01/2009 até 31/12/2009
- Pedidos posteriores a 31/12/2009
Create Table PedidosAte2008
(DataPedido DateTime Not Null CHECK (DataPedido < '01/01/2009'),
...
Create Table Pedidos2009
(DataPedido DateTime Not Null CHECK (DataPedido between '01/01/2009' and '31/12/2009'),
...
Create Table PedidosApos2009
(DataPedido DateTime Not Null CHECK (DataPedido > '31/12/2009'),
A seguir insira os dados nas tabelas "quebradas" conforme a check constraint:
Insert into PedidosAte2008
Select * From Pedidos
Where DataPedido < '01/01/2009';
Insert into Pedidos2009
Se fores utilizar a view com o mesmo nome da tabela original, renomeie ou exclua a tabela pedidos.
Agora basta criar a view "juntando" os dados das três tabelas:
Create View Pedidos
With SchemaBinding
as
Select DataPedido, NroOrdem, CodCliente,ValorTotal,Desconto,DataEntrega,Observacoes
from dbo.PedidosAte2008
Union All
Select DataPedido, NroOrdem, CodCliente,ValorTotal,Desconto,DataEntrega,Observacoes
from dbo.Pedidos2009
Union All
Select DataPedido, NroOrdem, CodCliente,ValorTotal,Desconto,DataEntrega,Observacoes
from dbo.PedidosApos2009;
Com a view criada é possível utilizar Insert, Update e Delete nela que o SQL Server irá se basear na check constraint para identificar qual das três tabelas que deverá ser alterada.
Como no exemplo utilizamos o mesmo nome da tabela original, os programas que utilizavam a tabela Pedidos não precisarão ser alterados.
Nenhum comentário:
Postar um comentário