clé primaire en SQL

clé primaire en SQL - SQL/NoSQL - Programmation

Marsh Posté le 01-10-2007 à 10:26:21    

Bonjour,
 
Alors voila mon problème: j'importe une feuille excel dans une base access pour faire des traitements dessus. jusque la tout va bien. Mon souhait serait de pouvoir rajouter une colonne de type NumAuto (ca j'y arrive) mais surtout de la mettre en clé primaire, le tout en instructions SQL car ca donnera une requête qui sera appelé par macro.
 
Voici ce que j'avais mis:
 
ALTER TABLE test  
    ADD COLUMN Num counter, PRIMARY KEY ("Num" );
 
Pour la première partie, il bronche pas mais c'est la partie primary key qui le fait grogner
Je suis sur que ca doit pas être bien méchant, mais mes cours de SQL sont loiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiin (tout au fond à gauche) et je galère comme un débutant ^^ donc si une âme charitable pouvait m'aider, cela me serait bien utile :)
 
Merci d'avance !

Reply

Marsh Posté le 01-10-2007 à 10:26:21   

Reply

Marsh Posté le 01-10-2007 à 10:34:41    

Ah oui j'oubliais, voici le gentil message d'erreur que ca me met quand je veux lancer la requête:
 
"Définition de champ "Num" non valide dans la définition de l'index ou de la relation"
 
Petite précision, je n'ai qu'une seule table dans ma base
 
Merki !

Reply

Marsh Posté le 02-10-2007 à 14:40:17    

Ben moi j'importe ma table, puis je crée ensuite la clé primaire.
Elle genere toute seule les index.
C'est tout.


Message édité par thierryR le 02-10-2007 à 14:40:39

---------------
Penguin online qui ne fait que des conneries, et qui aime ça. Membre du http://www.fonacon.net/
Reply

Marsh Posté le 02-10-2007 à 15:17:49    

Oui certe, mais moi je veux le faire en SQL ^_^'
Le faire a la main, je sais faire, y a pas de souci, par contre l'automatiser en SQL c'est une autre paire de manches, et c'est justement la dessus que je sèche... :)

Reply

Marsh Posté le 02-10-2007 à 15:20:54    

ajoute ton champs.
 
rempli-le.
 
et seulement après, met-le en pk...
 
là ça ne peux pas marcher : tu ajoutes un champ (donc vide par défaut, ou avec une valeur par défaut identique pour toutes les lignes) et t'en fait une pk (qui n'accepte ni les valeurs vides ni les doublons...)
 
ça peut pas marcher :spamafote:

Reply

Marsh Posté le 03-10-2007 à 08:07:27    

Le champ n'est pas vide puisqu'il s'agit d'un champ type NumAuto (donc quand je défini son type, il remplit automatiquement toutes les lignes correspondant à chaque enregistrement). Mais une hypothèse me vient à l'idée; peut être faut il faire deux requêtes et non une pour qu'il le prenne en compte ?

Reply

Marsh Posté le 03-10-2007 à 08:16:51    

Si tu crée ta table vide avec une clé primaire
Tu importe ton autre table de dans en laissant à null ta clé.
Elle va s'incrémenté toute seule si tu l'as déclaré auto increment ......


---------------
Penguin online qui ne fait que des conneries, et qui aime ça. Membre du http://www.fonacon.net/
Reply

Marsh Posté le 03-10-2007 à 08:27:46    

de tête un champ numauto quand tu le crées après la table, il est vide...
 
et c'est normal.
 
il va se remplir dans quel ordre sinon ? c'est pas au sgbd de choisir à ta place

Reply

Marsh Posté le 03-10-2007 à 10:58:23    

@thierryR: Justement je crée pas ma table vide, c'est l'importation d'une feuille excel avec entête qui va créer ma table. Mais vu que ce sont des données, y a pas de colonne qui puisse faire office de clé primaire; d'où ma volonté de rajouter ensuite une colonne de type NumAuto qui est tout indiquée pour faire la clé primaire :)
 
 
@MagicBuzz: Le truc c'est qu'en faisant le test "à la main", c'est à dire en ajoutant la colonne à la main et en définissant le type en NumAuto, il est defini en 'incrément' et remplit les lignes de la table automatiquement. Donc je vois pas pourquoi ca serait pas pareil en SQL... Après qu'il y ai une commande ou une syntaxe précise à rentrer en SQL, je dis pas  :jap:  
 
Sachant que je veux que l'extraction et la mise en place de la clé primaire se fasse de manière automatisée puisque déclenché par une macro lancée par l'utilisateur  :bounce:


Message édité par alkashee le 03-10-2007 à 11:02:14
Reply

Marsh Posté le 08-10-2007 à 14:06:30    

C'est bon j'ai trouvé, une vieille histoire de ";" au lieu de ","  :fou:

Reply

Sujets relatifs:

Leave a Replay

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