none
criação de tabela RRS feed

  • Pergunta

  •  

    Olá!

     

    eu sei criar tabela e setar a propriedade "is identity" para que seja gerado o valor automaticamente para uma coluna. O que gostaria de fazer é que esse valor seja gerado com base num outro valor, exemplo:

     

    COD_SUPERIOR   CODIGO_A_SER_GERADO

    1                                      1

    1                                      2

    1                                      3

    2                                      1

    2                                      2

    3                                      1

    3                                      2

    3                                      3

    3                                      4

     

    a coluna CODIGO_A_SER_GERADO tem seu valor incrementado com base na coluna COD_SUPERIOR...é uma relação "pai - filho".

     

    tem como fazer isso sem ser via trigger?

     

    Obrigado,

    Diego

    domingo, 13 de abril de 2008 22:21

Respostas

  • Boa Noite,

     

    Infelizmente não há como fazer isso. Você teria que usar uma trigger ou inserir o registro via SP para gerar esse código. Como alternativa eu particularmente utilizaria outra implementação. O Identity já é capaz de garantir um registro como único e do ponto de visto de modelagem isso já é suficiente. Se a idéia de usar esse código é apenas para fins de formatação você poderia utilizar a função OVER com a cláusula PARTITION BY para gerar esse formato (disponível apenas no SQL Server 2005).

     

    Code Snippet
    SELECT
      COD_SUPERIOR,
      ROW_NUMBER() OVER (PARTITION BY COD_SUPERIOR ORDER BY COD_SUPERIOR) AS  CODIGO_A_SER_GERADO
    FROM
      TABELA

     

     

    [ ]s,

     

    Gustavo

    domingo, 13 de abril de 2008 23:39

Todas as Respostas

  • Boa Noite,

     

    Infelizmente não há como fazer isso. Você teria que usar uma trigger ou inserir o registro via SP para gerar esse código. Como alternativa eu particularmente utilizaria outra implementação. O Identity já é capaz de garantir um registro como único e do ponto de visto de modelagem isso já é suficiente. Se a idéia de usar esse código é apenas para fins de formatação você poderia utilizar a função OVER com a cláusula PARTITION BY para gerar esse formato (disponível apenas no SQL Server 2005).

     

    Code Snippet
    SELECT
      COD_SUPERIOR,
      ROW_NUMBER() OVER (PARTITION BY COD_SUPERIOR ORDER BY COD_SUPERIOR) AS  CODIGO_A_SER_GERADO
    FROM
      TABELA

     

     

    [ ]s,

     

    Gustavo

    domingo, 13 de abril de 2008 23:39
  •  

    valeu gustavo..vou usar trigger então

     

    Diego

    segunda-feira, 14 de abril de 2008 11:30