Bonjour, voici un problème vu hier soir, mais je me suis dit que j'aurai les idées plus claires le matin, donc j'ai attendu ce matin et encore tenté de le résoudre. Comme ça veut pas, je me tourne vers le forum...
Dans MySql, j'ai 2 tables et veux déclarer une des colonnes de la première comme clé étrangère sur la seconde, mais...
DDL de la table ticket :
Code sql : 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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 DROP TABLE IF EXISTS `ticket`; CREATE TABLE `ticket` ( `id_ticket` int(8) NOT NULL, `product_name` varchar(25) COLLATE utf8_bin DEFAULT NULL, `assigned_group` varchar(30) COLLATE utf8_bin DEFAULT NULL, `submitted_date` date NOT NULL, `last_resolved_date` date NOT NULL, `summary` varchar(200) COLLATE utf8_bin NOT NULL, `priority_key` smallint(2) NOT NULL, `status_key` smallint(2) NOT NULL, `country_key` smallint(2) NOT NULL, `submitter_SESA` int(6) NOT NULL, `customer_SESA` int(6) NOT NULL, `organization_key` smallint(2) DEFAULT NULL, `incident_key` tinyint(2) NOT NULL, `reported_source` varchar(20) COLLATE utf8_bin DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ALTER TABLE `ticket` ADD PRIMARY KEY (`id_ticket`), ADD KEY `fk_Priority` (`priority_key`) USING BTREE, ADD KEY `fk_Status` (`status_key`) USING BTREE, ADD KEY `fk_organization` (`organization_key`); -- -- AUTO_INCREMENT pour les tables déchargées -- -- -- AUTO_INCREMENT pour la table `ticket` -- ALTER TABLE `ticket` MODIFY `id_ticket` int(8) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7495669; -- -- Contraintes pour les tables déchargées -- -- -- Contraintes pour la table `ticket` -- ALTER TABLE `ticket` ADD CONSTRAINT `fk_organization` FOREIGN KEY (`organization_key`) REFERENCES `organization` (`organization_key`) ON DELETE SET NULL ON UPDATE SET NULL; COMMIT;
DDL de la table incident :
Code sql : 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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 DROP TABLE IF EXISTS `incident`; CREATE TABLE `incident` ( `incident_key` tinyint(2) NOT NULL, `incident` varchar(13) COLLATE utf8_bin NOT NULL DEFAULT '' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- -- Déchargement des données de la table `incident` -- INSERT INTO `incident` (`incident_key`, `incident`) VALUES (1, 'Incident'); -- -- Index pour les tables déchargées -- -- -- Index pour la table `incident` -- ALTER TABLE `incident` ADD PRIMARY KEY (`incident_key`); -- -- AUTO_INCREMENT pour les tables déchargées -- -- -- AUTO_INCREMENT pour la table `incident` -- ALTER TABLE `incident` MODIFY `incident_key` tinyint(2) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; COMMIT;
requête SQL :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ALTER TABLE `ticket` ADD CONSTRAINT `fk_incident` FOREIGN KEY (`incident_key`) REFERENCES `incident` (`incident_key`) ON DELETE SET NULL ON UPDATE SET NULL;
et message d'erreur :cependant, comme on peut le constater, ça a déjà marché. Donc, comment faire ici ?Ne peut créer la table `tickets`.`ticket` (Errcode: 150 "Foreign key constraint is incorrectly formed") (Détails…)
Partager