Bonjour a tous,

j'ai plusieurs tables dans ma base pour gérer les langues (les noms sont également traduit dans toutes les langues).
c'est pour un site sur le cinema.

J'ai besoin d'afficher pour: film ou un dvd, etc.. une liste de langues (français, anglais, etc..., ou "aucun")
Globalement dans le code du site l'id "1" correspond au français donc j'aimerai utiliser cet id = 1 = français dans la base de données aussi.

"aucun" est considéré comme un language car pour les infos d'un dvd par exemple jeux avoir ces 3 cas de figures

1: plusieurs langues renseignés
2: "aucun" (aucun sous titres)
3: non renseigné

Donc voilà mon problème, pour diverses raisons j'aimerai que l'id 0 = ".." (qui correspond a "aucun")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
CREATE TABLE IF NOT EXISTS `langues` (
  `id` tinyint(3) UNSIGNED NOT NULL AUTO_INCREMENT,
  `suffixe` char(2) NOT NULL COMMENT 'Suffixe à 2 lettres de la langue selon la norme ISO_639-1',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
 
 
INSERT INTO `langues` (`id`, `suffixe`) VALUES
(1, 'fr'),
(2, 'en'),
(3, 'es'),
(4, 'pl'),
(5, 'de'),
(6, '..');
cette table (simplifiée) me permet d'obtenir un id automatiquement pour chaque langue, cet id est utilisé ensuite avec les autres tables.
actuellement le numéro 6 correspond a ".." et j'aimerai le mettre en numéro 0.

le problème est simplement là, et si je fais ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
CREATE TABLE IF NOT EXISTS `langues` (
  `id` tinyint(3) UNSIGNED NOT NULL AUTO_INCREMENT,
  `suffixe` char(2) NOT NULL COMMENT 'Suffixe à 2 lettres de la langue selon la norme ISO_639-1',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
 
INSERT INTO `langues` (`id`, `suffixe`) VALUES
(0, '..'),
(1, 'fr'),
(2, 'en'),
(3, 'es'),
(4, 'pl'),
(5, 'de');
l'incrementation démarre quand même à 1 ce qui donne:
(1,'..')
et j'obtiens une erreur quand il essaie d’insérer:
(1, 'fr')

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicata du champ '1' pour la clef 'PRIMARY'

J'ai essayé avec AUTO_INCREMENT=-1 mais il n'apprécie pas non plus.

J'ai vu que tous mes id commence a 1 dans toutes mes tables. Du coup je me demande si je ne devrais pas dans la logique SQL ajouter une colonne 'id_langue' qui elle pourrait commencer a '0'.
Mais dans ce cas, comment obtenir automatiquement un nouvel 'id_langue' unique lorsque j'ajoute une langue ?