如何删除所有相关的外键和其他约束列在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. 与外键约束
- 6. MySQL软删除,唯一键和外键约束
- 7. 从文件表删除与外键约束
- 8. SQL和外键约束删除
- 9. 无法删除外键约束
- 10. 自引用外键约束和删除
- 11. MySQL外键约束 - 整数列
- 12. MySql外键约束问题
- 13. MySQL - 外键约束错误
- 14. 检查外键约束MySQL
- 15. 外键约束失败(MySQL)
- 16. 删除不影响外键约束到其他表的主键
- 17. MYSQL创建表,约束,外键
- 18. MySQL:删除一行忽略外键约束
- 19. 无法删除或更新父行:外键约束失败 - MYSQL
- 20. MySQL删除内连接,但外键约束失败
- 21. mysql无法删除或更新父行:外键约束失败
- 22. MariaDB/MySQL外键约束:可能在删除时请求级联?
- 23. MySQL帮助不能删除行(errno:150)外键约束
- 24. 从列中删除主键约束
- 25. 错误:更新或删除表“表名”违反外键约束
- 26. 外键约束与失败
- 27. SQL与外键约束
- 28. mysql的删除约束
- 29. 程序删除外键约束和删除没有行动
- 30. 删除与部门经理外键约束雇员冲突
你救我说!谢谢!这正是我正在寻找的,所以我可以使用ForeignKey删除一列。 – marcolopes 2017-06-16 20:27:39