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")
cette table (simplifiée) me permet d'obtenir un id automatiquement pour chaque langue, cet id est utilisé ensuite avec les autres tables.
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, '..');
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:
l'incrementation démarre quand même à 1 ce qui donne:
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');
(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 ?
Partager