[MySQL] Supprimer toutes les contraintes d'une table

Supprimer toutes les contraintes d'une table [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 23-01-2018 à 15:09:06    

Salut !

 

Je cherche une solution pour supprimer toutes les contraintes de type foreign key d'une table MySQL (ou plutôt Maria DB).

 

J'ai essayé avec des choses comme ça :
ALTER TABLE maTable DROP FOREIGN KEY *;
ALTER TABLE maTable DROP FOREIGN KEY LIKE 'a%'; (elles commencent toutes par a)
mais bien entendu ça me jette et je ne trouve pas d'info pour faire ça dans la doc :/

 

Quelqu'un aurait une idée ?

 


edit : Je viens d'essayer d'un autre manière, sans plus de succès :/

Code :
  1. DELETE
  2. FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
  3. WHERE TABLE_NAME = 'maTable'
  4. AND TABLE_SCHEMA = 'maBase'
  5. AND REFERENCED_TABLE_SCHEMA IS NOT NULL;

ça me répond : "Access denied for user 'root'@'localhost' to database 'information_schema' "


Message édité par sire de Botcor le 23-01-2018 à 15:20:07

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 23-01-2018 à 15:09:06   

Reply

Marsh Posté le 23-01-2018 à 16:02:28    

Bon, j'ai trouvé une solution pas pratique du tout car non utilisable dans un script :
 
Je passe d'abord ce script :

Code :
  1. SELECT concat('alter table ',table_schema,'.maTable DROP FOREIGN KEY ',constraint_name,';')
  2. FROM information_schema.table_constraints
  3. WHERE constraint_type='FOREIGN KEY'
  4. AND TABLE_NAME = 'maTable'
  5. AND table_schema='maBase';

Puis je récupère le résultat et le passe à son tour comme script...
 
 
 
Si qqun a une solution qui permette de rester 100% dans le script de départ, je suis preneur :)


Message édité par sire de Botcor le 23-01-2018 à 16:03:54

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 07-03-2018 à 14:31:55    


Vous dites que c'est "non utilisable dans un script". Je suppose donc que vous vous limitez à un script SQL.
 
Si vous utilisiez un script en shell, il pourrait gérer l'envoi de vos parametres (maBase et maTable), constituer la requête (voire les requêtes si plusieurs tables sont à traiter)  qui vous intéresse et ensuite l'exécuter.
 
Autre solution, un "PL/SQL like" : MariaDB utilise SQL/PSM. Plus d'info ici par exemple : https://ocelot.ca/blog/blog/2017/01 [...] n-mariadb/
 


---------------
Topic du routeur RTN56U : http://forum.hardware.fr/hfr/resea [...] 3573_1.htm  OC i5 750 : http://forum.hardware.fr/hfr/Overc [...] 6399_1.htm
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed