Sql 删除级联时删除
我有一张儿童桌。在创建表时,使用ON DELETE CASCADE的和外键 子表或父表中都没有记录 我希望主键和外键保持原样,但只希望从子表中删除级联选项 无论如何,我可以改变那个子表 多谢各位Sql 删除级联时删除,sql,constraints,cascade,alter,Sql,Constraints,Cascade,Alter,我有一张儿童桌。在创建表时,使用ON DELETE CASCADE的和外键 子表或父表中都没有记录 我希望主键和外键保持原样,但只希望从子表中删除级联选项 无论如何,我可以改变那个子表 多谢各位 ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } 默认设置为无操作 因此,请尝试将子表更改回默认值。(Oracle)您只能更改约束的状态。删除时不是状态。所以您需要删除约束并重新创建它 drop table t1 cascade co
ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }
默认设置为无操作
因此,请尝试将子表更改回默认值。(Oracle)您只能更改约束的状态。删除时不是状态。所以您需要删除约束并重新创建它
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);
如果您使用的是Oracle,则有不同的字典视图可以帮助您正确地重新创建约束- 将数据库导出为
文件.sql
- 然后按ctrl+H将删除级联上的所有
替换为“”
- 然后从数据库中删除这些表,并使用新文件实例化一个新的表,而不使用DELETE CASCADE上的
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);