1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Duvida SQL

Discussão em 'Web Development' iniciada por The Dealer, 2 de Março de 2009. (Respostas: 5; Visualizações: 561)

  1. The Dealer

    The Dealer Power Member

    Tenho uma determinada tabela (com registos), com campos (numero, nome, idade) sem CONSTRAINT. Existe alguma forma de adicionar um campo ID (por ex) ao inicio da tabela, e consequentemente fazer desse campo, uma chave primária?

    Eu costumo usar o ALTER mas penso que só dá para adicionar "por ordem"...
     
    Última edição: 3 de Março de 2009
  2. AliFromCairo

    AliFromCairo Power Member

    Se não tens registos, podes sempre fazer DROP e em seguida criar de novo. De qualquer das formas, penso que podes fazer ALTER para adicionar a nova coluna, e em seguida adicionar a CONSTRAINT para a coluna adicionada.
     
  3. The Dealer

    The Dealer Power Member

    Desculpa enganei-me, queria dizer com registos.

    De facto, que estupidez a minha, claro que posso fazer isso, fica sem grande nexo se consultar a tabela propriamente dita, mas no html é só alterar a da disposição dos items.

    Não tenho a certeza se posso criar uma CONSTRAINT no ALTER mas vou verificar.
     
  4. AliFromCairo

    AliFromCairo Power Member

    Sim, podes. Quase tudo o que fazes dentro do CREATE TABLE, podes posteriormente fazer com o ALTER TABLE.
     
  5. The Dealer

    The Dealer Power Member

    Tem de facto lógica, por isso, fazendo uma coisa de cada vez fiz o seguinte:

    Código:
          
      $criarcampo3 = mysql_query("ALTER TABLE alunosso ADD n_telefone char(30) DEFAULT 'Nao possui numero telefone';");
      $criarcampo4 = mysql_query("ALTER TABLE alunosso ADD id int NOT NULL AUTO_INCREMENT;");
    
    O primeiro query sempre funcionou bem. O segundo, se não fizer o auto_increment, dá-me valores de 0, o que é normal. No entanto assim, o campo id nem sequer é criado. Alguem me sabe explicar porque? Já experimentei de varias formas, com e sem not null e não dá...

    EDIT: Isto também nao dá... (directamente no phpmyadmin)

    Código:
    ALTER TABLE alunosso ADD id int NOT NULL AUTO_INCREMENT, 
    CONSTRAINT pk_id PRIMARY KEY(id)
     
    Última edição: 3 de Março de 2009
  6. The Dealer

    The Dealer Power Member

    Resolvido com:

    Código:
    $criarcampo4 = mysql_query("ALTER TABLE `alunosso` ADD `id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY;");
    Mas a questão é, eu queria ordená-los de forma ascendente, juntamente com o campo (esse sim já anteriormente criado) numero. Existe forma?
     

Partilhar esta Página