Mysql 数据不能回滚,删除有外键约束的数据

数据不能回滚:

SHOW VARIABLES LIKE 'autocommit';  //查看是否自动提交
set autocommit=OFF;  //关闭自动提交
alter table TRIPLEG engine=innodb; //设置当前表的引擎为 innodb

更改有外键约束的数据:

方式一:
alter table EXAM_JFXXSUB disable constraint FK_EXAM_JFXXSUB; //先禁用
alter table table_name enable constraint constraint_name ; // 启用
方式二:
采用约束等级:

  Cascade方式:在父表上update/delete记录时,同步update/delete掉子表的匹配记录
  Set null方式:在父表上update/delete记录时,将子表上匹配记录的列设为null,但是要注意子
  表的外键列不能为not null
  No action方式:如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作
  Restrict方式:同no action, 都是立即检查外键约束

  建表时就采用约束等级:

create table dept(
did int primary key, #部门编号
dname varchar(50) #部门名称
);
create table emp(
eid int primary key, #员工编号
ename varchar(5), #员工姓名
deptid int, #员工所在的部门
foreign key (deptid) references dept(did) on update cascade on delete set null

posted @ 2022-10-31 22:50  Swelsh-corgi  阅读(62)  评论(0编辑  收藏  举报