none
Auto Incremento RRS feed

  • Pergunta

  • Olá amigos;

    Uma dúvida sobre auto-incremento...

    tenho um while dentro de outro while fazendo insert em um master-detail..... (ex: pedido / Item)

    ou seja:

    qdo vou inserir o item o banco que retorna um erros que não tem o id_pedido, pois, não pego o identy do pedido...

    Como posso identificar o auto-incremento do pedido para inserir no item?

    Desde já agradeço

    segunda-feira, 26 de novembro de 2018 13:29

Respostas

Todas as Respostas

  • Deleted
    segunda-feira, 26 de novembro de 2018 14:01
  • na verdade citei um exemplo de pedido/item (master-detail) como exemplo.

    faço a leitura de um arquivo texto e incluo em duas tabelas(master-detail) tab1 = master, tab2 = detail

    while not eof do

    begin

    insiro no tab1 e post(tab1 com chave identity)

    insiro no tab2 (aqui preciso do codigo identity do master)

    ****qdo vou inserir preciso do ID

    end;

    Percebi, sou novo no mssql, que posso pegar o ultimo id inserido na tabela usando SCOPE_IDENTITY . Como usaria esta função. No próprio insert into ou teria que usar um select depois do insert? Obrigado



    • Editado Sorrilha, Ale segunda-feira, 26 de novembro de 2018 19:56
    segunda-feira, 26 de novembro de 2018 19:55
  • Usei logo depois do insert:

    SELECT IDENT_CURRENT('NOME_TABELA')

    não funcionou.

    segunda-feira, 26 de novembro de 2018 20:21
  • Deleted
    segunda-feira, 26 de novembro de 2018 21:44
  • procedure

    var

    CHAVE_PROD : integer;

    INSERT INTO producao(id_cor, id_seg, id_ramo, id_sub_ramo, id_ci, id_prep, data_emissao, id_tipo, cod_producao, 
    n_proposta,
    vig_inicial,
    vig_final) VALUES('12', '56','1', '1', '11', '51', +convert(datetime, '27/11/2018', 103), '1', '20181127163337-0012-GFXYR', 
    '40199888',
    convert(datetime, '24/09/2018', 103),
    convert(datetime, '24/09/2019', 103))
    SET CHAVE_PROD = SCOPE_IDENTITY();

    assim que que estou pegando o identity pra inserir no detais. Me mostra um erro.

    terça-feira, 27 de novembro de 2018 18:36
  • fiz isso tbém depois do insert

            qGen := TFDQuery.Create(Self);
            qGen.Close;
            qGen.Connection := dtmConexao.FDConnection1;
            qGen.SQL.Add('SELECT IDENT_CURRENT(id_PROD) from prod');
            qGen.Open;
            showmessage(qGen.Fields[0].AsString);
            qGen.Close;
            qGen := nil;

    me retorna vazio a string/integer

    Obrigado

    terça-feira, 27 de novembro de 2018 18:55
  • Deleted
    terça-feira, 27 de novembro de 2018 19:13
  • obrigado. Deu certo.
    terça-feira, 27 de novembro de 2018 20:03