Duvida SQL

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:
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.
 
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.

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.
 
Sim, podes. Quase tudo o que fazes dentro do CREATE TABLE, podes posteriormente fazer com o ALTER TABLE.

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:
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?
 
Back
Topo