Bonjour, alors sur notre SGBD nous ne pouvons pas faire la modification de type de la colonne id_fonction car elle sert de clé étrangère et après plusieurs recherche j'ai trouver la solution : Il faut en premier désactiver la clé étrangère de la table collaborateur avec la syntaxe : ALTER TABLE collaborateur DROP FOREIGN KEY collaborateur_ibfk_2 ; ensuite modifier le type de la colonne id_fonction de la table collaborateur : ALTER TABLE collaborateur MODIFY COLUMN id_fonction INT; ensuite faire la même opération sur la table fonction : ALTER TABLE fonction MODIFY COLUMN id_fonction INT; et pour finir il faut réactiver la clef etrangère de la table collaborateur : ALTER TABLE collaborateur ADD FOREIGN KEY (id_fonction) REFERENCES fonction(id_fonction);
Idem pour le remplacement du nom de la colonne salaire_brut, la contrainte de vérification CHECK bloque le RENAME de la colonne il faut d'abord supprimer la contrainte avec : ALTER TABLE collaborateur DROP CONSTRAINT collaborateur_chk_1; ensuite faire le changement de nom : ALTER TABLE collaborateur CHANGE COLUMN salaire_brut salaire_collaborateur NUMERIC(6,2); et en dernier remettre la contrainte CHECK en place : ALTER TABLE collaborateur ADD CONSTRAINT collaborateur_chk_1 CHECK (salaire_collaborateur
Qui peut m'aider sur les clés étrangères de la table COLLABORATEUR. En exécutant la commande j'obtiens cette erreur : Code d'erreur : 1452. Impossible d'ajouter ou de mettre à jour une ligne enfant : une contrainte de clé étrangère échoue (`test`.`collaborateur`, CONSTRAINT `FK_FONCTION` FOREIGN KEY (`ID_FONCTION`) REFERENCES `fonction` (`ID_FONCTION`)) CREATE TABLE COLLABORATEUR ( ID_COLLABORATEUR VARCHAR(5) PRIMARY KEY NOT NULL, NOM VARCHAR(80), PRENOM VARCHAR(80), DATE_NAISSANCE DATE, DATE_ENTREE DATE DEFAULT(9999-01-01), ID_FONCTION VARCHAR(4), FOREIGN KEY (ID_FONCTION) REFERENCES FONCTION(ID_FONCTION), DEPARTEMENT VARCHAR(10), ID_SITE VARCHAR(4), FOREIGN KEY (ID_SITE) REFERENCES SITE(ID_SITE), SALAIRE_BRUT NUMERIC(6,2) CHECK(SALAIRE_BRUT
Bonjour, alors sur notre SGBD nous ne pouvons pas faire la modification de type de la colonne id_fonction car elle sert de clé étrangère et après plusieurs recherche j'ai trouver la solution : Il faut en premier désactiver la clé étrangère de la table collaborateur avec la syntaxe : ALTER TABLE collaborateur DROP FOREIGN KEY collaborateur_ibfk_2 ; ensuite modifier le type de la colonne id_fonction de la table collaborateur : ALTER TABLE collaborateur MODIFY COLUMN id_fonction INT; ensuite faire la même opération sur la table fonction : ALTER TABLE fonction MODIFY COLUMN id_fonction INT; et pour finir il faut réactiver la clef etrangère de la table collaborateur : ALTER TABLE collaborateur ADD FOREIGN KEY (id_fonction) REFERENCES fonction(id_fonction);
Idem pour le remplacement du nom de la colonne salaire_brut, la contrainte de vérification CHECK bloque le RENAME de la colonne il faut d'abord supprimer la contrainte avec : ALTER TABLE collaborateur DROP CONSTRAINT collaborateur_chk_1; ensuite faire le changement de nom : ALTER TABLE collaborateur
CHANGE COLUMN salaire_brut salaire_collaborateur NUMERIC(6,2); et en dernier remettre la contrainte CHECK en place : ALTER TABLE collaborateur ADD CONSTRAINT collaborateur_chk_1 CHECK (salaire_collaborateur
Qui peut m'aider sur les clés étrangères de la table COLLABORATEUR. En exécutant la commande j'obtiens cette erreur :
Code d'erreur : 1452. Impossible d'ajouter ou de mettre à jour une ligne enfant : une contrainte de clé étrangère échoue (`test`.`collaborateur`, CONSTRAINT `FK_FONCTION` FOREIGN KEY (`ID_FONCTION`) REFERENCES `fonction` (`ID_FONCTION`))
CREATE TABLE COLLABORATEUR (
ID_COLLABORATEUR VARCHAR(5) PRIMARY KEY NOT NULL,
NOM VARCHAR(80),
PRENOM VARCHAR(80),
DATE_NAISSANCE DATE,
DATE_ENTREE DATE DEFAULT(9999-01-01),
ID_FONCTION VARCHAR(4),
FOREIGN KEY (ID_FONCTION) REFERENCES FONCTION(ID_FONCTION),
DEPARTEMENT VARCHAR(10),
ID_SITE VARCHAR(4),
FOREIGN KEY (ID_SITE) REFERENCES SITE(ID_SITE),
SALAIRE_BRUT NUMERIC(6,2) CHECK(SALAIRE_BRUT
@@mad8831 je pense qu'il faut d'abord créer la table fonction après créer la table collaborateur
Maître