Pessoal, Postei uma dúvida em uma outra lista sobre Insert e Update em views que foge às regras de views atualizáveis.
Pesquisando um pouco mais sobre o assunto, na net, encontrei esse material, abaixo. De repente pode ser útila para alguém dessa lista. []´s Luis Alberto. VIEWS atualizáveis Uma VIEW é atualizável se todas as seguintes condições forem satisfeitas : Ela é baseada nos dados de uma única tabela ou de uma outra VIEW atualizável As colunas excluídas pela definição da VIEW (presentes nas tabelas originais) aceitem valores NULOS. O comando select da VIEW não tenha subqueries, não utilize DISTINCT, HAVING, funções agregadas, JOINs, UDFs ou Stored Procedures. Se qualquer uma das condições àcima falhar, então a VIEW será ReadOnly. Note que apesar disso, voce pode simular que uma VIEW read-only seja atualizável através do uso de triggers que serão responsáveis pela manipulação dos dados nas tabelas originais. É da responsabilidade do programador a distribuição/manipulação dos dados em suas respectivas tabelas através dos triggers. Exemplo de utilização de triggers para simular uma VIEW atualizável (retirado da documentação do IB): /* Criando as tabelas bases */ CREATE TABLE Table1 ( ColA INTEGER NOT NULL, ColB VARCHAR(20), CONSTRAINT pk_table PRIMARY KEY(ColA) ); CREATE TABLE Table2 ( ColA INTEGER NOT NULL, ColC VARCHAR(20), CONSTRAINT fk_table2 FOREIGN KEY REFERENCES Table1(ColA) ); /* Criando a VIEW */ CREATE VIEW TableView AS SELECT Table1.ColA, Table1.ColB, Table2.ColC FROM Table1, Table2 WHERE Table1.ColA = Table2.ColA; /* Trigger para gerenciar os deletes */ CREATE TRIGGER TableView_Delete FOR TableView BEFORE DELETE AS BEGIN DELETE FROM Table1 WHERE ColA = OLD.ColA; DELETE FROM Table2 WHERE ColA = OLD.ColA; END; /* Trigger para gerenciar os Updates */ CREATE TRIGGER TableView_Update FOR TableView BEFORE UPDATE AS BEGIN UPDATE Table1 SET ColB = NEW.ColB WHERE ColA = OLD.ColA; UPDATE Table2 SET ColC = NEW.ColC WHERE ColA = OLD.ColA; END; /* Trigger para gerenciar os Inserts */ CREATE TRIGGER TableView_Insert FOR TableView BEFORE INSERT AS BEGIN INSERT INTO Table1 values (NEW.ColA,NEW.ColB); INSERT INTO Table2 values (NEW.ColA,NEW.ColC); END; Autor : Carlos Henrique Cantu Matéria publicada na revista Clube Delphi _______________________________________________________ Promoção Yahoo! Acesso Grátis: a cada hora navegada você acumula cupons e concorre a mais de 500 prêmios! Participe! http://yahoo.fbiz.com.br/ -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html