J'ai une table appelée "Users" elle contient des champs tels que Id, ParentId, Name.
Ce que je veux est de modifier cette table pour ajouter une nouvelle relation d'auto-jointure de sorte que ParentId lie à Id, mais ParentId est nullable. Je veux écrire cette altération sql statment dans mysql sans laisser tomber la table.Comment modifier une table pour ajouter une relation d'auto-jointure?
0
A
Répondre
1
Voulez-vous dire que vous voulez ajouter une contrainte de clé étrangère? Si tel est le cas, consultez les documentations FOREIGN KEY Constraints. Voici un exemple, en commençant par la création d'une table simple:
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
Ajouter un index pour la colonne parent_id
:
ALTER TABLE users
ADD INDEX `parent_id` (`parent_id`);
Ajouter la contrainte de clé étrangère:
ALTER TABLE users
ADD CONSTRAINT `fk_parent_id`
FOREIGN KEY `parent_id` (`parent_id`)
REFERENCES `users` (`id`);
Afficher la nouvelle table structure:
SHOW CREATE TABLE users;
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `parent_id` (`parent_id`),
CONSTRAINT `fk_parent_id`
FOREIGN KEY (`parent_id`)
REFERENCES `users` (`id`)
) ENGINE=InnoDB;
2
alter table Users add constraint parent foreign key (ParentId) references
Users (Id);
0
Notez que si vous travaillez avec une table contenant des données, la création de relations de clé étrangère échouera si des relations orphelines existent. Trouvez et corrigez les orphelins avant de créer des clés étrangères!
SELECT * FROM users
O WH parent_id
NOT IN (SELECT ID FROM users
);
Questions connexes
- 1. Comment modifier une table temporaire?
- 2. Comment ajouter une relation dans une Doctrine Migration
- 3. Je dois modifier une table sqlite3 pour ajouter FTS3
- 4. Ajouter/modifier table SQL
- 5. Comment modifier une table pour activer CASCADE DELETE?
- 6. Comment ajouter une valeur à une table?
- 7. Comment ajouter une relation un-à-un dans MYSQL?
- 8. Impossible de modifier une table
- 9. Comment puis-je ajouter une colonne à une table existante?
- 10. jointure HABTM table avec une relation HABTM
- 11. Ajouter un enregistrement à une relation has_and_belongs_to_many
- 12. Comment ajouter un filtre automatique à une relation avec SQLAlchemy?
- 13. SQLAlchemy ForeignKey relation via une table intermédiaire
- 14. essayant de modifier une table
- 15. Comment ajouter une table jQuery de base
- 16. HABTM-Relation: Créer une relation pour tous les autres documents
- 17. Supprimer la ligne quand une table a une relation FK
- 18. Ajouter une ligne pour joindre une table en utilisant JPA
- 19. Comment modifier une table PostgreSQL et rendre une colonne unique?
- 20. Comment ajouter une relation many-to-many dans Entity Framework
- 21. Exclure une relation many-to-many via une troisième table
- 22. Ajouter une quantité à une recette habtm Ingrédients Relation
- 23. Sugar CRM intégration avec Java - Comment ajouter une relation
- 24. Comment ajouter plusieurs-à-une relation dans PostgreSQL
- 25. Comment configurer une relation dans cakephp pour une relation récursive one-to-one?
- 26. Difficulté pour mapper une relation avec NHibernate
- 27. Comment ajouter une liste dans une table jquery?
- 28. comment générer une relation many-to-many-relation dans web2py?
- 29. Ajouter une relation (externe) à des entités Hibernate existantes
- 30. Ruby on Rails: Comment écrire une migration pour ajouter une référence à une table?