Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lndalmd

Adição / Exclusão em View com Join

Recommended Posts

Pessoal, Estou com um problema: Na minha aplicação, utilizo uma view que une dados de tabelas de clientes (7 campos) e grupos (2 campos). O problema é que quando incluo um cliente nesta view, ela inclui também um registro na tabela de grupos. Se eu deleto um cliente nesta tabela, é deletado também o registro relacionado da tabela de grupos... Como fazer com que esta view só adicione/exclua os dados da minha tabela clientes? Obrigado. Leandro

Compartilhar este post


Link para o post
Compartilhar em outros sites

lndalmd, acho que você está com uma idéia errada de view. View é uma visão dos teus dados,ou seja, é uma "tabela virtual" onde você só pode consultar. Quando tu exclui um registro na tabela "clientes", como não tem existe mais um join deste excluído com o grupo, ele desaparece da view.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eh velho, em views você soh faz select.... na verdade os dados excluidos sao excluidos da tabela fisica... enquanto a view eh uma tabela logica, na qual você pode criar uma tabela somente c/ os dados necessarios p/ aquela parte do programa.....no caso você estarah deletando direto da tabela clientes.... ai sim ......poste o script ai o da view , e o das tabelas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,Acho que me expressei mal no relato do meu problema.O que está me atrapalhando é que nesta view, que possui um join c/ 2 tabelas, quando excluo a empresa '53 - A' ligada ao país '1 - Brasil', tanto a empresa quanto o país são deletados!Da mesma forma, quando adiciono uma empresa e coloco o código do país e também insiro o nome do país, o nome do país é cadastrado novamente na tbl_países, com outro código!Bem, para acabar com este mistério, vou postar o script abaixo.Obrigado á todos pela atenção,Abraços - LeandroCREATE TABLE [dbo].[tbl_empresas] ( [nm_id] [int] IDENTITY (1, 1) NOT NULL , [ch_nome_fantasia] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AI NOT NULL , [ch_razão_social] [varchar] (150) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_cnpj] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_ie] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [bt_ie_isento] [bit] NULL , [ch_endereço] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_número] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_complemento] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_cep] [varchar] (9) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_bairro] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_cidade] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_estado] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [nm_id_país] [int] NULL , [ch_ddd_1] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_telefone_1] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_ddd_2] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_telefone_2] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_ddd_3] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_telefone_3] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_contato] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_cargo] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AI NULL ) ON [PRIMARY]GOCREATE TABLE [dbo].[tbl_países] ( [nm_id] [int] IDENTITY (1, 1) NOT NULL , [ch_nome] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AI NOT NULL , [ch_sigla] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_continente] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , [ch_ddi] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AI NULL ) ON [PRIMARY]GOSET QUOTED_IDENTIFIER ON GOSET ANSI_NULLS ON GOCREATE VIEW vw_empresasAS SELECT a.nm_id, a.ch_nome_fantasia, a.ch_razão_social, a.ch_cnpj, a.ch_ie, a.bt_ie_isento, a.ch_endereço, a.ch_número, a.ch_complemento, a.ch_cep, a.ch_bairro, a.ch_cidade, a.ch_estado, a.nm_id_país, b.ch_nome AS ch_nome_país, a.ch_ddd_1, a.ch_telefone_1, a.ch_ddd_2, a.ch_telefone_2, a.ch_ddd_3, a.ch_telefone_3, a.ch_contato, a.ch_cargoFROM tbl_empresas a LEFT OUTER JOIN tbl_países bON a.nm_id_país = b.nm_idGOSET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS ON GO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom velho, erros de inserção, alteração ou deleção nao tem nada a ver c/ views.... pois como ja disse soh eh possivel fazer selects c/ elas.

 

Pelo q eu vi você criou a coluna de codigo da tabela PAISES c/ o mesmo nome da coluna EMPRESAS...

pode ser isto q tah pegando ........ de uma olhada

 

 

CREATE TABLE [dbo].[tbl_empresas] (

[nm_id] [int] IDENTITY (1, 1) NOT NULL ,...

 

______________________________________

 

CREATE TABLE [dbo].[tbl_países] (

[nm_id] [int] IDENTITY (1, 1) NOT NULL ,...

 

 

Sendo q a coluna q esta na tabela EMPRESAS ligando esta c/ a tabela PAISES eh esta

 

[nm_id_país] [int] NULL ,

 

______________________________________

 

E outra, eh uma sugestao somente.

 

Faça Constraints como Foreign Key, Primary Key, Check, entre outras e crie tabelas adicionais.

Que nem você criou na tabela empresas colunas c/ tipo de contato, contendo 3 contatos certo???

 

E se a empresa tiver mais de 3 contatos como q fika???

E se a empresa tiver somente um contato?? Pra q servirao as outras colunas???

 

Crie uma tabela Contatos, e outra Tipo de Contatos q contarah os tipos como Email, telefone res, telefone com, celular.

 

 

Tem mais algumas coisas, mas essas sao as principais.

 

Bom como eu disse eh somente uma sugestao, porém irá tornar sua tabela muito mais íntegra e consistente.

 

 

Ae se nao for esse o erro de um toke...

flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.