• 技术文章 >数据库 >mysql教程

    Mysq中l建立测试父表、子表及测试用例归纳总结

    php是最好的语言php是最好的语言2018-08-01 15:06:23原创1076

    建立测试表

    查看版本信息

    select version();
    5.7.22

    创建父表

    drop table if exists Models;
    CREATE TABLE Models
      (
        ModelID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
       Name VARCHAR(40) NOT NULL,
        PRIMARY KEY (ModelID)
    );

    创建子表

    drop table if exists Orders;
    CREATE TABLE Orders
      (
        ID          SMALLINT UNSIGNED NOT NULL PRIMARY KEY,
       ModelID     SMALLINT UNSIGNED NOT NULL,
         Description VARCHAR(40),
        FOREIGN KEY (ModelID) REFERENCES Models (ModelID)
          ON DELETE cascade
      );

    测试

    测试用例-无父表相应数据,先插入子表

    insert into Orders(Id,ModelID,Description) values (1,1,'a');

    结果:执行失败
    异常:[2018-07-31 11:08:01] 23000 Cannot add or update a child row: a foreign key constraint fails (bov.Orders, CONSTRAINT Orders_ibfk_1 FOREIGN KEY (ModelID) REFERENCES Models (ModelID) ON DELETE CASCADE)
    原因:通不过on delete cascade 的外键约束检查

    测试用例-先插入主表数据,再插入子表数据

    insert into Models(ModelID,Name) values (1,'a');
    insert into Orders(Id,ModelID,Description) values (1,1,'a');

    结果:执行成功

    select * from Models;
    1    a
    
    select * from Orders;
    1    1    a

    测试用例-父子表都有数据,删除子表数据

    delete from Orders where id = 1;

    结果:执行成功

    select * from Models;
    1    a
    select * from Orders;
    为空

    测试用例-父子表都有数据,删除父表书库

    delete from Models where ModelID = 1;

    结果:执行成功

    select * from Models;
    为空
    select * from Orders;
    为空

    测试用例-父子表都有数据,更新子表外键

    update Orders set ModelID = 3 where ID =1;

    结果:执行失败
    异常:[2018-07-31 12:33:02] 23000 Cannot add or update a child row: a foreign key constraint fails (bov.Orders, CONSTRAINT Orders_ibfk_1 FOREIGN KEY (ModelID) REFERENCES Models (ModelID) ON DELETE CASCADE)
    原因:通不过on delete cascade 的外键约束检查

    测试用例-父子表都有数据,更新父表主键

    update Models set ModelID = 2 where ModelID =1;

    结果:执行失败
    异常:[2018-07-31 12:34:24] 23000 Cannot delete or update a parent row: a foreign key constraint fails (bov.Orders, CONSTRAINT Orders_ibfk_1 FOREIGN KEY (ModelID) REFERENCES Models (ModelID) ON DELETE CASCADE)
    原因:通不过on delete cascade 的外键约束检查

    测试用例-父子表都有数据,更新子表非外键

    update Orders set Description = 'b' where ID =1;

    结果:执行成功

    select * from Orders;
    1    1    b

    测试用例-父子表都有数据,更新父表非主键

    update Models set Name = 'c' where ModelID =1;

    结果:执行成功

    select * from Models;
    1    c

    相关文章:

    mysql数据库索引的建立以及性能测试

    mysql 高性能压力测试(总结了好久

    相关视频:

    数据结构探险之线性表篇

    以上就是Mysq中l建立测试父表、子表及测试用例归纳总结的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:mysql
    上一篇:外键DDL在Oracle运行正常,在mysql报异常以及解决方案 下一篇:MySQL_实现组内排序-Oracle中的rank()函数的功能

    相关文章推荐

    • mysql怎样查询一列• mysql怎样增加表格• 怎样查询mysql状态• mysql怎样多列求和• 深入研究一下MySQL原理篇之InnoDB数据页

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网