我有一個名爲「Users」的表,它包含一些字段,如Id,ParentId,Name。
我想要改變這個表來添加新的自連接關係,以便ParentId鏈接到Id,但ParentId是可以爲空的。 我想在mysql中編寫這個alter sql statment而不刪除表。如何修改表以添加自連接關係?
0
A
回答
1
你的意思是你想添加一個外鍵約束?如果是這樣,請參閱FOREIGN KEY Constraints文檔。下面是一個例子,首先創建一個簡單的表:
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
添加指數爲parent_id
列:
ALTER TABLE users
ADD INDEX `parent_id` (`parent_id`);
添加外鍵約束:
ALTER TABLE users
ADD CONSTRAINT `fk_parent_id`
FOREIGN KEY `parent_id` (`parent_id`)
REFERENCES `users` (`id`);
顯示新表結構:
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
請注意,如果您使用的是包含數據的表,則如果存在孤立關係,則外鍵關係創建將失敗。在創建外鍵之前查找並修復孤兒!
SELECT * FROM users
WHERE parent_id
NOT IN(SELECT ID FROM users
);
相關問題
- 1. 修改Spree模型以添加更多關係
- 2. 修改「模型」以在LinqPad中添加關係?
- 3. 如何獲得聯繫人列表(添加/刪除/修改)
- 4. 雄辯 - 如何在hasMany關係中添加連接?
- 5. 自動添加/修改usings
- 6. 鄰接列表添加關係
- 7. 如何使用pyodbc添加表關係
- 8. 學說:許多人有許多關係連接表:如何添加WHERE條件
- 9. 如何將其他數據添加到has_and_belongs_to_many關係的連接表中?
- 10. 解析連接表關係
- 11. 反向關係連接表
- 12. SQLAlchemy - order_by關係連接表
- 13. Sql修改關係
- 14. 如何修改我的類以覆蓋列表添加?
- 15. 如何修改左側外部聯接以爲右側表添加過濾器
- 16. 如何添加關係(nhibernate)
- 17. Elixir,如何修改依賴關係?
- 18. 修改CKEditor鏈接對話框以將鏈接添加到自定義屬性
- 19. 如何以聯繫表格7添加自己的簡碼?
- 20. 使用自定義連接表主鍵關聯多個關係
- 21. 如何修改lxml自動鏈接以更自由?
- 22. 如何修改以下代碼以添加事務?
- 23. 動態添加/修改ActiveRecord關聯
- 24. 多表連接 - 我可以添加一個外連接嗎?
- 25. 你可以修改你自己的頁面表(操作系統相關)嗎?
- 26. 關係代數自然連接
- 27. 修改關係協會
- 28. 休眠一對多關係連接表與連接表中的加入列
- 29. 如何修改此SQL連接以包含所有列?
- 30. 如何通過關係表連接表格?