[Sybase] Modifier clé primaire sur une table

Modifier clé primaire sur une table [Sybase] - SQL/NoSQL - Programmation

Marsh Posté le 05-10-2006 à 17:19:26    

Bonjour tout le monde,  
 
J'ai à ma disposition une bdd Sybase, et j'ai l'impression d'avoir une veille version puisque je n'arrive pas à tout faire.  
Je crée une table Région :  
 

Code :
  1. CREATE TABLE Region2 (
  2.   id NUMERIC IDENTITY NOT NULL,
  3.   country VARCHAR(50) NOT NULL,
  4.   province VARCHAR(50) NOT NULL,
  5.   city VARCHAR(50) NOT NULL,
  6.   primary key(country,province,city)
  7. )


 
Je souhaite dans cette table que le triplet (country,province,city) n'apparaisse qu'une seule fois, donc j'ai mis ces champs dans la clé primaire (c'est p-e la meilleure solution d'ailleurs ?)
 
Ensuite, je pense que l'évolutivité de la table... Alors je décide d'ajouter un champ "district" (varchar) à la fin de la table. Je souhaiterai ajouter le champ district à la clé primaire mais je n'y arrive pas :-(
 
J'essaye ca :  
ALTER TABLE Region2 ADD primary key (country,province,city,district)
Il me dit que je peux avoir qu'une seule clé primaire bien sur.  
 
Alors, pour enlèver la clé :  
ALTER TABLE Region2 DROP primary key (country,province,city)
Mais cela plante :  
"Incorrect syntax near the keyword 'primary'."
 
J'ai aussi tenté en utilisant des regroupements de champs "UNIQUE" et cela ne fonctionne pas.  
 
Quelqu'un de génial pourrait il m'aider ?  


---------------
Quelque soit la taille de l' éléphant , il arrivera toujours à remplir une marmite avec ses couilles
Reply

Marsh Posté le 05-10-2006 à 17:19:26   

Reply

Marsh Posté le 05-10-2006 à 19:41:36    

hmmm... essaie ça :
 
create table region_tmp as select * from region2;
drop table region2;
"rename" table region_tmp region2; -- "rename" est différent d'un SGBD à l'autre du coup faut que tu trouves la bonne syntaxe (au pire, tu recopie à nouveau)
 
au final, tu auras ta table avec tes données d'origine, et sans clé. tu pourras donc créer une pk sur tes champs.
 
ps : force le champ district à une valeur avant de créer la PK, car les PK ne supportent pas à ma connaisance les valeurs NULL. (au contraire des contraintes uniques)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed