Pular para o conteúdo
  • Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 18 anos, 11 meses atrás por Marcio68Almeida.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #79121
    Wendel
    Participante

      Tava analisando umas SEQUENCES que o TOAD FOR ORACLE GEROU segue:

      — script1.sql —————————
      CREATE SEQUENCE GRAOWN.GRASQ_CD_SOS
      START WITH 22865
      MAXVALUE 999999999999999999999999999
      MINVALUE 1
      NOCYCLE
      NOCACHE
      NOORDER;
      ————————————————-
      Preciso fazer um espelho de uma base de dados em outro servidor, dai vou executar esse script (script1.sql). Tenho a seguinte dúvida:

      – Suponha que a base foi alterada (recebeu novos valores) depois da criação do “script.sql”, e o ultimo número não seja mais 22865, é agora 22870. Dai eu vou lá e executo esse scritp1.sql, quando eu for fazer uma nova inserção nessa base, será que vai dar erro? o que vai acontecer?
      Uma solução seria verificar no script de carga (segue exemplo abaixo desse ) qual é o ultimo numero e alterar? antes de rodar o script1?

      —————- script de inserção – ultima linha ————
      INSERT INTO SOS ( CD_SOS, NR_SOS, DETALHE_SOS, RATEIO, REGISTRO_SOS, FUNCIONARIO_REGISTRO,
      TIPO_OBRA, CD_EM_ANEXO, CD_PROGRAMA, CD_CONTA, CD_FORNECEDOR, VL_SOS, VL_MAO_SOS, VL_MAT_SOS,
      VL_DESCONTO_SOS, FUNCIONARIO_ENGENHEIRO, ENVIO_SOS, FUNCIONARIO_ENVIO, RECEBIMENTO_SOS,
      FUNCIONARIO_RECEBIMENTO, APROVACAO_SOS, FUNCIONARIO_APROVADOR, CD_SITUACAO, DEVOLUCAO_SOS,
      CD_FUNCIONARIO_DEVOLUCAO, MOTIVO_DEVOLUCAO, DESCRICAO_SOS ) VALUES ( 22864,
      ‘008432’, ‘teste’, 0, ’13/03/2007′, 2, 1, 0, 9, NULL, 2805, 1002, 502, 500
      , NULL, 1, ’13/03/2007′, 2, ’13/03/2007′, 2, ’13/03/2007′, 1, 8, NULL, NULL, NULL
      , NULL);
      —————————————-

      Valeu
      Wendel

      #79122
      chduarte
      Participante

        Para alterar o valor inicial de uma sequence vc precisa recria-la. Se o numero ja existir na sua tabela e o campo for pk entao vc vai ter um erro.

        []

        #79123
        Marcio68Almeida
        Participante

          Quando você está dando carga, você estará enviando também o número que originou-se em uma sequence, se após a carga você tentar inserir uma nova linha de dados, você terá uma chave duplicada.
          Se você fará cargas constantes de uma máquina para outra, não vejo sentido na sequence, a que deve prevalecer é a de origem.
          Se você vai criar um ambiente de testes / homologação, após a carga veja qual é o maior número e crie a sequence a partir desse número.

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.