我有一个子表,并在创建表时使用了ON DELETE CASCADE外键。
无论是在子表还是父表中都没有记录。
我希望保留主键和外键,但只想从子表中删除级联选项。
是否有任何方式可以更改该子表?
谢谢。
我有一个子表,并在创建表时使用了ON DELETE CASCADE外键。
无论是在子表还是父表中都没有记录。
我希望保留主键和外键,但只想从子表中删除级联选项。
是否有任何方式可以更改该子表?
谢谢。
表格:
显示创建表格table;
CREATE TABLE `table` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`id_departamento` int(11) unsigned DEFAULT NULL,
`name` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
KEY `id_departamento` (`id_departamento`),
CONSTRAINT `departamentos_direcciones_pedidos_ibfk_1` FOREIGN KEY (`id_departamento`) REFERENCES `departamentos` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
ALTER TABLE departamentos_direcciones_pedidos DROP CONSTRAINT departamentos_direcciones_pedidos_ibfk_1;
ALTER TABLE departamentos_direcciones_pedidos ADD FOREIGN KEY (id_departamento) REFERENCES departamentos(id);
ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }
(Oracle)您只能更改约束的状态。ON DELETE不是一个状态。因此,您需要删除约束并重新创建它。
drop table t1 cascade constraints;
create table t1 (id number unique, rid number constraint t1_fk references t1(id) on delete cascade);
alter table t1 drop constraint t1_fk;
alter table t1 add constraint t1_fk foreign key(rid) references t1(id);
.sql
文件ctrl + H
,将所有的ON DELETE CASCADE
替换为""ON DELETE CASCADE
的新表格