none
Replicar informação de um tabela a outra RRS feed

  • Pergunta

  • Olá pessoal !!!!

    Tenho uma dúvida e não consigo achar respostas talvez vocês possam ajudar !!!Estou criando um sistema de teste, chamei de " FILA".Este sistema tem 3 tabelas, a principio ( digo isso pq ainda não sei se vou criar no banco uma tabela "Tb_Login" - essa tabela ficaria gravado as informações dos usuario, mas ainda não é uma ideia valida). As tabelas são :

    Tb_Usuario
    Tb_Vendedor
    Tb_Atendimento 
    Sendo que a tabela " Tb_Usuario " tem essa estrutura
    create table TbUsuario(
    Id_Matricula int not null primary key,
    Usuario varchar (10) not null,
    Funcao varchar (15) not null,
    Senha varchar (10) not null,
    Vendedor varchar(10) not null,
    Observacao varchar(200)
    );
    Já a tabela "Tb_Vendedor"
    create table TbVendedor (
    Id_Matricula int not null primary key,
    Usuario varchar (10) not null,
    Funcao varchar (15) not null,
    Senha varchar (10) not null,
    Vendedor varchar(10) not null,
    Observacao varchar (200),
    Nome varchar (100),
    CPF char (14),
    Nascimento date,
    Sexo char (10),
    Idade char (2),
    Endereco  varchar(50),
    Bairro varchar (50),
    Cep varchar (15),
    Telefone char (13),
    Celular Char (13),
    Email varchar (50)
    );
    A ideia que tenha um espelho, os seis primeiros campos tanto da tabela "tb_vendedor e tb_usuario "são iguais.  A ideia é que ao cadastrar o usuario estes dados vão alimentar os seis primeiros campos da tabela Vendedor, não seja necessário digitar novamente os dados ao acessar o sistema na TELA VENDEDOR, somente preencher os campos que não foram preenchidos.
    Eu tenho como amarrar essa informação ?
    Abraços 
    sexta-feira, 26 de outubro de 2012 22:29

Respostas

  • Boa noite,

    A solução seria você criar um gatilho (trigger) de inserção.

    Segue um exemplo:

    CREATE TRIGGER TRG_Insere_Vendedor
    ON Tb_Usuario INSTEAD OF INSERT
    AS 
    BEGIN
    
      INSERT INTO Tb_Vendedor (Id_Matricula, Usuario, Funcao, Senha, Vendedor, Observacao)
      SELECT Id_Matricula, Usuario, Funcao, Senha, Vendedor, Observacao) FROM INSERTED 
    
    END

    Acredito que não é o seu caso, mas quando estamos em um ambiente critico, onde cada recurso desperdiçado é muito valioso, esta não seria a melhor solução, pois a cada inserção o gatilho irá desparrar, consumindo recursos.

    Outra solução seria você aproveitar as variáveis que estão sendo usadas para inserir na tabela Tb_Usuario para inserir na Tb_Vendedor no mesmo procedimento.

    Até mais.


    Rafael Godoi Sabadin
    http://www.linkedin.com/in/rafaelgodoisabadin


    Classifique as respostas. O seu feedback é essencial.

    • Marcado como Resposta Ju-1709 domingo, 28 de outubro de 2012 00:52
    sexta-feira, 26 de outubro de 2012 23:51
  • Olá Rafael !!!

    Agradeço a sua ajuda não foi preciso criar o gatilho, refiz as minhas tabelas para que seja alimentada alguns campos de tabelas diferentes, vou postar para que possa ser útil a outra pessoa, abraços.

    CREATE TABLE TB_VENDEDOR
    (
    ID_VENDEDOR INT NOT NULL IDENTITY(1,1),
    NOME VARCHAR (100),
    CPF CHAR(14),
    NASCIMENTO DATETIME,
    SEXO CHAR(10),
    IDADE CHAR (2),
    ENDERECO VARCHAR(50),
    BAIRRO VARCHAR (50),
    CEP VARCHAR (15),
    TELEFONE CHAR(13),
    CELULAR CHAR(13),
    EMAIL VARCHAR(50),
    CONSTRAINT PK_ID_VENDEDOR PRIMARY KEY(ID_VENDEDOR)
    );
    CREATE TABLE TB_USUARIO 
    (
    ID_USUARIO INT NOT NULL IDENTITY(1,1),
    ID_VENDEDOR INT NOT NULL,
    NOME_USUARIO VARCHAR(50) NOT NULL,
    SENHA VARCHAR(30) NOT NULL,
    CONSTRAINT PK_ID_USUARIO PRIMARY KEY(ID_USUARIO),
    CONSTRAINT FK_ID_VENDEDOR FOREIGN KEY(ID_VENDEDOR) REFERENCES TB_VENDEDOR(ID_VENDEDOR)
    );
     

    • Marcado como Resposta Ju-1709 domingo, 28 de outubro de 2012 00:52
    domingo, 28 de outubro de 2012 00:50

Todas as Respostas

  • Boa noite,

    A solução seria você criar um gatilho (trigger) de inserção.

    Segue um exemplo:

    CREATE TRIGGER TRG_Insere_Vendedor
    ON Tb_Usuario INSTEAD OF INSERT
    AS 
    BEGIN
    
      INSERT INTO Tb_Vendedor (Id_Matricula, Usuario, Funcao, Senha, Vendedor, Observacao)
      SELECT Id_Matricula, Usuario, Funcao, Senha, Vendedor, Observacao) FROM INSERTED 
    
    END

    Acredito que não é o seu caso, mas quando estamos em um ambiente critico, onde cada recurso desperdiçado é muito valioso, esta não seria a melhor solução, pois a cada inserção o gatilho irá desparrar, consumindo recursos.

    Outra solução seria você aproveitar as variáveis que estão sendo usadas para inserir na tabela Tb_Usuario para inserir na Tb_Vendedor no mesmo procedimento.

    Até mais.


    Rafael Godoi Sabadin
    http://www.linkedin.com/in/rafaelgodoisabadin


    Classifique as respostas. O seu feedback é essencial.

    • Marcado como Resposta Ju-1709 domingo, 28 de outubro de 2012 00:52
    sexta-feira, 26 de outubro de 2012 23:51
  • Olá Rafael !!!

    Agradeço a sua ajuda não foi preciso criar o gatilho, refiz as minhas tabelas para que seja alimentada alguns campos de tabelas diferentes, vou postar para que possa ser útil a outra pessoa, abraços.

    CREATE TABLE TB_VENDEDOR
    (
    ID_VENDEDOR INT NOT NULL IDENTITY(1,1),
    NOME VARCHAR (100),
    CPF CHAR(14),
    NASCIMENTO DATETIME,
    SEXO CHAR(10),
    IDADE CHAR (2),
    ENDERECO VARCHAR(50),
    BAIRRO VARCHAR (50),
    CEP VARCHAR (15),
    TELEFONE CHAR(13),
    CELULAR CHAR(13),
    EMAIL VARCHAR(50),
    CONSTRAINT PK_ID_VENDEDOR PRIMARY KEY(ID_VENDEDOR)
    );
    CREATE TABLE TB_USUARIO 
    (
    ID_USUARIO INT NOT NULL IDENTITY(1,1),
    ID_VENDEDOR INT NOT NULL,
    NOME_USUARIO VARCHAR(50) NOT NULL,
    SENHA VARCHAR(30) NOT NULL,
    CONSTRAINT PK_ID_USUARIO PRIMARY KEY(ID_USUARIO),
    CONSTRAINT FK_ID_VENDEDOR FOREIGN KEY(ID_VENDEDOR) REFERENCES TB_VENDEDOR(ID_VENDEDOR)
    );
     

    • Marcado como Resposta Ju-1709 domingo, 28 de outubro de 2012 00:52
    domingo, 28 de outubro de 2012 00:50