修改外键约束

参考:

https://blog.youkuaiyun.com/peng_666666/article/details/54813098

mysql> show create table in_community_line;

| in_community_line | CREATE TABLE `in_community_line` (
  `uuid` char(32) NOT NULL,
  `name` varchar(50) NOT NULL,
  `lft` int(10) unsigned NOT NULL,
  `rght` int(10) unsigned NOT NULL,
  `tree_id` int(10) unsigned NOT NULL,
  `level` int(10) unsigned NOT NULL,
  `parent_id` char(32) DEFAULT NULL,
  `room_id` char(32) NOT NULL,
  PRIMARY KEY (`uuid`),
  KEY `in_community_line_room_id_0aa1b1cd_fk_common_room_uuid` (`room_id`),
  KEY `in_community_line_lft_7fd98161` (`lft`),
  KEY `in_community_line_rght_d2de5471` (`rght`),
  KEY `in_community_line_tree_id_247cf493` (`tree_id`),
  KEY `in_community_line_level_772a9cbc` (`level`),
  KEY `icl_parent_id_1211_pk_icl_uuid` (`parent_id`),
  CONSTRAINT `icl_parent_id_1211_pk_icl_uuid` FOREIGN KEY (`parent_id`) REFERENCES `in_community_line` (`uuid`),
  CONSTRAINT `in_community_line_room_id_0aa1b1cd_fk_common_room_uuid` FOREIGN KEY (`room_id`) REFERENCES `common_room` (`uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

删除外键约束

mysql> ALTER TABLE in_community_line DROP FOREIGN KEY icl_parent_id_1211_pk_icl_uuid;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> 

查看已删除外键约束icl_parent_id_1211_pk_icl_uuid

| in_community_line | CREATE TABLE `in_community_line` (
  `uuid` char(32) NOT NULL,
  `name` varchar(50) NOT NULL,
  `lft` int(10) unsigned NOT NULL,
  `rght` int(10) unsigned NOT NULL,
  `tree_id` int(10) unsigned NOT NULL,
  `level` int(10) unsigned NOT NULL,
  `parent_id` char(32) DEFAULT NULL,
  `room_id` char(32) NOT NULL,
  PRIMARY KEY (`uuid`),
  KEY `in_community_line_room_id_0aa1b1cd_fk_common_room_uuid` (`room_id`),
  KEY `in_community_line_lft_7fd98161` (`lft`),
  KEY `in_community_line_rght_d2de5471` (`rght`),
  KEY `in_community_line_tree_id_247cf493` (`tree_id`),
  KEY `in_community_line_level_772a9cbc` (`level`),
  KEY `icl_parent_id_1211_pk_icl_uuid` (`parent_id`),
  CONSTRAINT `in_community_line_room_id_0aa1b1cd_fk_common_room_uuid` FOREIGN KEY (`room_id`) REFERENCES `common_room` (`uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

删除索引

mysql> ALTER TABLE in_community_line DROP INDEX icl_parent_id_1211_pk_icl_uuid;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> 

 查看已删除外键约束icl_parent_id_1211_pk_icl_uuid

| in_community_line | CREATE TABLE `in_community_line` (
  `uuid` char(32) NOT NULL,
  `name` varchar(50) NOT NULL,
  `lft` int(10) unsigned NOT NULL,
  `rght` int(10) unsigned NOT NULL,
  `tree_id` int(10) unsigned NOT NULL,
  `level` int(10) unsigned NOT NULL,
  `parent_id` char(32) DEFAULT NULL,
  `room_id` char(32) NOT NULL,
  PRIMARY KEY (`uuid`),
  KEY `in_community_line_room_id_0aa1b1cd_fk_common_room_uuid` (`room_id`),
  KEY `in_community_line_lft_7fd98161` (`lft`),
  KEY `in_community_line_rght_d2de5471` (`rght`),
  KEY `in_community_line_tree_id_247cf493` (`tree_id`),
  KEY `in_community_line_level_772a9cbc` (`level`),
  CONSTRAINT `in_community_line_room_id_0aa1b1cd_fk_common_room_uuid` FOREIGN KEY (`room_id`) REFERENCES `common_room` (`uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

添加外键约束 on delete

ALTER TABLE in_community_line ADD CONSTRAINT `in_community_line_parent_id_f2bfc602_fk_in_community_line_uuid` FOREIGN KEY (`parent_id`) REFERENCES `in_community_line` (`uuid`) ON DELETE CASCADE ON UPDATE CASCADE;

 查看添加外键约束in_community_line_parent_id_f2bfc602_fk_in_community_line_uuid

| in_community_line | CREATE TABLE `in_community_line` (
  `uuid` char(32) NOT NULL,
  `name` varchar(50) NOT NULL,
  `lft` int(10) unsigned NOT NULL,
  `rght` int(10) unsigned NOT NULL,
  `tree_id` int(10) unsigned NOT NULL,
  `level` int(10) unsigned NOT NULL,
  `parent_id` char(32) DEFAULT NULL,
  `room_id` char(32) NOT NULL,
  PRIMARY KEY (`uuid`),
  KEY `in_community_line_room_id_0aa1b1cd_fk_common_room_uuid` (`room_id`),
  KEY `in_community_line_lft_7fd98161` (`lft`),
  KEY `in_community_line_rght_d2de5471` (`rght`),
  KEY `in_community_line_tree_id_247cf493` (`tree_id`),
  KEY `in_community_line_level_772a9cbc` (`level`),
  KEY `in_community_line_parent_id_f2bfc602_fk_in_community_line_uuid` (`parent_id`),
  CONSTRAINT `in_community_line_parent_id_f2bfc602_fk_in_community_line_uuid` FOREIGN KEY (`parent_id`) REFERENCES `in_community_line` (`uuid`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `in_community_line_room_id_0aa1b1cd_fk_common_room_uuid` FOREIGN KEY (`room_id`) REFERENCES `common_room` (`uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

 

修改约束以允许删除父表行,你可以采取以下几个步骤: 1. 确定是否有必要删除父表行:在修改约束之前,确保删除父表行不会导致数据不一致或破坏引用完整性。 2. 检查子表数据:查询子表(在这种情况下是 `t_shipment_car` 表)以查看是否存在与父表相关的行。如果存在相关行,你需要决定如何处理这些行,例如更新或删除它们。 3. 修改约束:使用 `ALTER TABLE` 语句修改约束的删除操作。你可以将 `ON DELETE RESTRICT` 修改为 `ON DELETE CASCADE` 或 `ON DELETE SET NULL`,具体取决于你的需求。 - `ON DELETE CASCADE`:当父表中的行被删除时,相关的子表行也将被自动删除。 - `ON DELETE SET NULL`:当父表中的行被删除时,相关的子表行的列将被设置为 NULL。 例如,将 `ON DELETE RESTRICT` 修改为 `ON DELETE CASCADE` 的示例语句如下: ```sql ALTER TABLE t_shipment_car DROP FOREIGN KEY FK_T_SHIPMENT_CAR_REFERENCE_45_T_SHIPMENT_ORDER, ADD CONSTRAINT FK_T_SHIPMENT_CAR_REFERENCE_45_T_SHIPMENT_ORDER FOREIGN KEY (shipment_order_id) REFERENCES t_shipment_order (shipment_order_id) ON DELETE CASCADE ON UPDATE RESTRICT; ``` 请根据你的具体情况选择适当的删除操作。 4. 执行修改:执行修改约束的 `ALTER TABLE` 语句,以将更改应用于数据库表结构。 请确保在执行任何数据库修改操作之前备份数据,并在执行操作之前仔细检查和确认所做的更改。如果你对数据库操作不熟悉,建议咨询专业的数据库管理员或开发人员来帮助你进行修改
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值