【问题标题】:remove ON DELETE CASCADE删除 ON DELETE CASCADE
【发布时间】:2014-10-28 09:28:55
【问题描述】:

我有一个子表。和外键在创建表时使用 ON DELETE CASCADE。

子表或父表中都没有记录。

我希望主键、外键保持原样,但只想从子表中删除 CASCADING 选项。

无论如何我可以改变那个子表。

谢谢。

【问题讨论】:

    标签: sql constraints cascade alter


    【解决方案1】:

    表:

    显示创建表表; 
    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
    
    1. 首先删除外键。
    ALTER TABLE departamentos_direcciones_pedidos DROP CONSTRAINT departamentos_direcciones_pedidos_ibfk_1;
    1. 其次,创建正确的外键
    ALTER TABLE departamentos_direcciones_pedidos ADD FOREIGN KEY (id_departamento) REFERENCES departamentos(id);

    【讨论】:

      【解决方案2】:
      ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }
      

      默认为无操作。

      所以尝试将您的子表改回默认值。

      【讨论】:

      • fid number(5) 在删除级联时引用父级(pid);所以我需要在 delete set default 上发出 alter table child modify fid .....对吗?
      【解决方案3】:

      (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);
      

      如果您使用的是 Oracle,则有不同的字典视图可以帮助您正确地重新创建约束

      【讨论】:

        【解决方案4】:
        • 将数据库导出为.sql 文件
        • 然后按ctrl + H将所有ON DELETE CASCADE替换为“”
        • 然后从数据库中删除表并使用新文件实例化一个没有ON DELETE CASCADE 的新文件

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-12-31
          • 2023-04-03
          • 1970-01-01
          • 1970-01-01
          • 2013-09-20
          • 2015-01-27
          • 2019-07-12
          相关资源
          最近更新 更多