如何刪除所有相關的外鍵和其他約束列在MySQL?刪除Mysql表列與外鍵約束
3
A
回答
2
據我所知在MySQL 你必須刪除列前手動刪除的約束。
只有當您使用該子句創建約束時,ON DELETE CASCADE子句纔會影響該表,並且只需要刪除與該約束關聯的外部行。
1
使用ON DELETE CASCADE
http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
4
使用SET FOREIGN_KEY_CHECKS = 0;
然後更改包含約束定義的表。大功告成後,關閉FOREIGN_KEY_CHECKS
回1
1
,如果你使用的是Java:
public void deleteColumn(Connection connection, String tableName, String columnName) throws SQLException {
// Drop all constraints that contain the specified column
{
final ResultSet resultSet = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY).executeQuery("select CONSTRAINT_NAME from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where CONSTRAINT_SCHEMA = SCHEMA() and TABLE_NAME = '" + tableName + "' and COLUMN_NAME = '" + columnName + "'");
while (resultSet.next()) {
final String constraintName = resultSet.getString("CONSTRAINT_NAME");
connection.createStatement().executeUpdate("ALTER TABLE `" + tableName + "` DROP FOREIGN KEY`" + constraintName + "`"); // Drop the foreign key constraint
}
resultSet.close();
}
// Drop all indexes that contain the specified column:
{
final ResultSet resultSet = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY).executeQuery("SHOW INDEX FROM `" + tableName + "` where column_name = '" + columnName+ "'");
while (resultSet.next()) {
final String keyName = resultSet.getString("Key_name");
connection.createStatement().executeUpdate("ALTER TABLE `" + tableName + "` DROP INDEX `" + keyName + "`"); // Drop the index
}
resultSet.close();
}
// Drop the column:
connection.createStatement().executeUpdate("ALTER TABLE `" + tableName + "` DROP COLUMN `" + columnName + "`"); // Drop the column
}
相關問題
- 1. MySQL外鍵約束,級聯刪除
- 2. mysql刪除和外鍵約束
- 3. 刪除複製表的外鍵約束
- 4. MySQL外鍵約束
- 5. mysql外鍵約束
- 6. 從表中刪除與同一個表的外鍵約束
- 7. 外鍵:與外鍵約束
- 8. 無法刪除一個MySQL表由於外鍵約束
- 9. 從具有外鍵約束的MySQL表中刪除
- 10. MySQL:在InnoDB表上刪除外鍵約束
- 11. 與外鍵約束
- 12. 與外鍵約束
- 13. MySQL軟刪除,唯一鍵和外鍵約束
- 14. 從文件表刪除與外鍵約束
- 15. SQL和外鍵約束刪除
- 16. 不能刪除外鍵約束
- 17. 刪除具有外鍵約束的行
- 18. 使用外鍵約束刪除行
- 19. 如何刪除外鍵約束
- 20. 自引用外鍵約束和刪除
- 21. 無法刪除外鍵約束
- 22. 外鍵約束MySQL與WHERE部分
- 23. MySQL外鍵約束 - 整數列
- 24. 檢查外鍵約束MySQL
- 25. MySql外鍵約束問題
- 26. 外鍵約束失敗(MySQL)
- 27. MYSQL添加外鍵約束
- 28. MySQL - 外鍵約束錯誤
- 29. 刪除不影響外鍵約束到其他表的主鍵
- 30. 從MySQL表獲取外鍵約束
你救我說!謝謝!這正是我正在尋找的,所以我可以使用ForeignKey刪除一列。 – marcolopes 2017-06-16 20:27:39