Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/09/2020, à 11:42

zephyre123

[RESOLU] Comment enlever des contraintes une fois la table créée Mysql

Bonjour,

Je suis débutant en sql et je suis les vidéos de Jason Champagne ici https://www.youtube.com/watch?v=b3kbXSO … Qg&index=7
Dans cette vidéos il parle des contraintes sur les champs et notamment comment les supprimer.

CREATE DATABASE `cours_sql`;
USE `cours_sql`;

CREATE TABLE `table_users`
(
	`id_user` SMALLINT(6) NOT NULL,
	`user_name` VARCHAR(30) NOT NULL,
	`user_email` VARCHAR(100),
	`user_registration` DATE NOT NULL,
	`user_admin` BOOLEAN DEFAULT 0
);

Pour enlever la contrainte NOT NULL d'un champ voici la commande indiquée dans la vidéo :

-- ENLEVER LA CONTRAINTE NOT NULL
ALTER TABLE table_users
ALTER id_user DROP NOT NULL;

Cependant je l'ai testé et elle ne fonctionne pas.

Pour enlever la contrainte DEFAULT d'un champ voici la commande indiquée dans la vidéo :

-- ENLEVER LA CONTRAINTE DEFAULT
ALTER TABLE table_users
ALTER user_admin DROP DEFAULT;

Cependant je l'ai testé et elle ne fonctionne pas non plus.

Pour enlever la contrainte CHECK :

ALTER TABLE table_users
DROP CHECK CHK_toobigid;

Cependant je l'ai testé et elle ne fonctionne pas non plus.

Auriez vous une astuce pour pallier à ces deux commandes qui ne fonctionnent pas ?
Et  pouvez vous essayer ces deux commandes de votre coté pour bien me confirmer qu'elles ne fonctionnent pas au cas ou j'aurai fait une mauvaise manip sans m'en rendre compte.
Merci pour votre aide !

Dernière modification par zephyre123 (Le 09/09/2020, à 17:12)

Hors ligne

#2 Le 09/09/2020, à 14:06

bruno

Re : [RESOLU] Comment enlever des contraintes une fois la table créée Mysql

Mauvais tuto, changer de tuto, ou tuto mal suivi…
Ces commandes ne peuvent pas fonctionner sur des tables créées ainsi.
cf. https://dev.mysql.com/doc/refman/8.0/en … table.html
et https://mariadb.com/kb/en/alter-table/

Pour la première par exemple : supprimer la contrainte « NOT NULL » de la colonne id_user, il faut faire :

ALTER TABLE `table_users` MODIFY COLUMN `id_user` SMALLINT(6);

--
Et comme ce n'est pas un problème de serveur mais de programmation, je déplace dans la bonne section.

Dernière modification par bruno (Le 09/09/2020, à 14:07)

Hors ligne

#3 Le 09/09/2020, à 14:25

zephyre123

Re : [RESOLU] Comment enlever des contraintes une fois la table créée Mysql

Merci Bruno pour ton aide je pense que la personne qui a fait le tuto a commis une erreur ou bien n'est plus à jour.
J'ai cherché dans les 2 documentations que tu m'as envoyé je n'ai pas trouvé la commande qui permet de supprimer une contrainte peut être je suis aveugle ...
Comment t'as fait pour trouver Bruno ?

Hors ligne

#4 Le 09/09/2020, à 14:45

bruno

Re : [RESOLU] Comment enlever des contraintes une fois la table créée Mysql

J'ai indiqué les docs pou montrer que la commande DROP ne s'applique pas dans ce cas. De ce que je comprends, elle ne peut s’appliquer que sur une contrainte (ou un « CHECK ») qui a été explicitement définie sur la table (avec CONSTRAINT ou CHECK).

Par ailleurs je ne considère pas que « NOT NULL » soit explicitement une contrainte sur une colonne, mais simplement une limitation des valeurs possibles, exemple :
VARCHAR(30) : valeurs possibles toute chaîne de zéro à 30 caractères ;
VARCHAR(30) NOT NULL : toute chaîne de 1 à 30 caractères.

De même DEFAULT xxx, n'est pas à proprement parler une contrainte sur une colonne. Cela permet juste d'avoir la valeur xxx par défaut lorsqu'on ne la précise pas.
Cela doit pouvoir se modifier de la même manière :

ALTER TABLE `table_users` MODIFY COLUMN `user_admin` BOOLEAN;

Pour la troisième commande il manque au moins une chose : la définition de la vérification (CHECK) à faire sur une colonne au moment de la création de la table ou après.

Attention : je ne suis pas du tout un spécialiste de SQL et des bases de données.

Hors ligne

#5 Le 09/09/2020, à 17:12

zephyre123

Re : [RESOLU] Comment enlever des contraintes une fois la table créée Mysql

Bruno tu t'en sors bien mieux que moi déjà et ton aide est précieuse merci pour toutes ces précisions.
Ça se voit que tu sais ou chercher et que t'a l'habitude de la documentation ce qui n'est pas mon cas loin de la mais ça viendra j'espère avec le temps.
Merci encore.

Hors ligne