none
como criar campo com auto numeração no sql server 2005 RRS feed

  • Pergunta

  • gostaria de saber com criar auto numeração na primary key da tabela que criei

    criei uma tabela no sql server 2005 com os seguintes campos:

    codigo tipo uniqueidentifier

    nome tipo nvarchar

    cargo tipo nvarchar

     e qdo tento inserir dados dá o seguinte erro , na linha em amarelo destacada no código

     

    Não é possível inserir o valor NULL na coluna 'codigo', tabela 'empregados.dbo.funcionario'; a coluna não permite nulos. Falha em INSERT. A instrução foi finalizada.

    codigo :

    Protected Sub CmdIncluir_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CmdIncluir.Click

    Dim objComando As SqlCommand

    Dim strSql As String

    Dim objTransacao As SqlTransaction

    Dim blnTransacao As Boolean = False

    Dim intLinhas As Integer

     

    strSql = "INSERT INTO FUNCIONARIO" & vbCrLf & _

    "(NOME,CARGO)" & vbCrLf & _

    "VALUES('" & txtNome.Text & " ','" & txtCargo.Text & " ' )"

     

    objComando = New SqlCommand

    objComando.Connection = objConexao

    objComando = objConexao.CreateCommand

     

    If objComando.Connection.State <> ConnectionState.Open Then

    objConexao.ConnectionString = strConexao

    objConexao.Open()

    End If

    objTransacao = objConexao.BeginTransaction

    blnTransacao = True

     

    With objComando

    .Transaction = objTransacao

    .CommandType = CommandType.Text

    .CommandText = strSql

    intLinhas = .ExecuteNonQuery

    End With

     

    objTransacao.Commit()

    blnTransacao = False

    Limpatela()

    GeraComboCadastrados()

    objComando = Nothing

     

     

    End Sub

     

    sexta-feira, 30 de maio de 2008 23:28

Todas as Respostas

  • Cristiano,

     

    Uma coluna com uniqueidentifier não cria um valor pra ela sozinha, como o identity. Voce precisa colocar uma clausula Default na criação da tabela, utilizando NEWID(), que cria um id único, ou NEWSEQUENTIALID, que cria um ID maior que o gerado anteriormente.

     

    Só pra lembrar, um campo uniqueidentifier é bem grande. Tanto que ele garante a unicidade entre máquinas em diversos domínios! Um identity talvez resolva melhor seu problema.

     

    Mas segue um exemplo de uniqueidentifier:

     

    Code Snippet

    CREATE TABLE Funcionario

        codigo UNIQUEIDENTIFIER   DEFAULT NEWID(),
        nome VARCHAR(50),

        cargo VARCHAR(50)

     

    )

     

     

     

    Espero ter ajudado!

     

    []'s

    sábado, 31 de maio de 2008 03:38
  • Olá,

     

    o uso do IDENTITY seria util.

     

    Nesse caso ficaria assim:

     

    CREATE TABLE Funcionario

    (

    codigo int IDENTITY(1,1),

    nome VARCHAR(50),

    cargo VARCHAR(50)

    )

     

    Lembrando que você pode também criar ou alterar a tabela já existente pelo Studio Management.

     

    []!

    João Paulo de Araujo

    sábado, 31 de maio de 2008 16:03
  • Cristiano,

     

    crie um campo do tipo IDENTITY


    Ricardo Oneda
    http://oneda.mvps.org/blog

    domingo, 1 de junho de 2008 18:58