Pessoal,

Problema:
Uma estrutura para Clinte A que tem que se manter fixa em quantidade de campos e tipos dos campos e ‘outra’ estrutura com campos novos para Cliente B.

Solução:
— Criacao da Tabela

create table teste
(
  campo1 integer,
  campo2 varchar2(10),
  campo3 char(1)
);

-- Criacao da View
create or replace view vteste as select * from teste;

-- Inserir os dados - Cliente A
insert into vteste (campo1, campo2, campo3) values (1,'teste1','s');
insert into vteste (campo1, campo2, campo3) values (2,'teste2','a');
insert into vteste (campo1, campo2, campo3) values (3,'teste3','b');
insert into vteste (campo1, campo2, campo3) values (4,'teste4','c');
insert into vteste (campo1, campo2, campo3) values (5,'teste5','f');

-- Criar indice
create unique index teste_idx on teste(campo1);

-- Teste para ver acao do indice
insert into vteste (campo1, campo2, campo3) values (5,'teste5','f');
-- ORA 00001 ... Correto.

-- Adicionar uma coluna nova - Cliente B
alter table teste add campo4 integer;

-- Inserir dados na view sem a coluna nova - Cliente A
insert into vteste (campo1, campo2, campo3) values (7,'teste7','p');

-- Inserir dados - Cliente B
insert into teste (campo1, campo2, campo3, campo4) values (8,'teste8','x',25);

-- Dados finais da view
select campo1, campo2, campo3 from vteste;

campo1  campo2  campo3
1       teste1  s
2       teste2  a
3       teste3  b
4       teste4  c
5       teste5  f
7       teste7  p
8       teste8  x

-- Dados finais da tabela
select campo1, campo2, campo3, campo4 from teste;

campo1  campo2  campo3  campo4
1       teste1  s
2       teste2  a
3       teste3  b
4       teste4  c
5       teste5  f
7       teste7  p
8       teste8  x       25

Objetivo:
Objetivo era mostrar que podemos ter view que pode receber inserção para atender Cliente A e estrutura nova de tabela para atender Cliente B (através de outras views, direto na tabela, procedures …).
Detalhe para inserir na view, ela tem que possuir campo NOVOS que PODEM SER NULOS e também campo NÃO NOLO mas com default definido que vai continuar inserindo normalmente.

Att,
capin