测试以两个外键为复合主键的表,两个外键空值情况
来源:互联网 发布:matlab 矩阵动态添加 编辑:程序博客网 时间:2024/04/28 18:05
测试以两个外键为复合主键的表,两个外键空值情况
多表关联的情况下,删除主表的一条数据,同时修改与主表关联的从表对应数据,如 tbl_a表,tbl_b表,两表交互表tbl_a_b。当tbl_a中的数据某条数据删除时,需要先清除tbl_a_b表中对应的数据才能删除tbl_a中的数据,但有时不想删除tbl_a_b的数据,就需把tbl_a_b中对应的a_id改为一个无价值的值。首先想到的就是null。
建表tbl_a:
create table tbl_a(a_id int primary key);
新增测试数据:
insert into tbl_a values(1); insert into tbl_a values(2);
建表tbl_b
create table tbl_b(b_id int primary key);
新增测试数据:
insert into tbl_b values(10); insert into tbl_b values(9);
建tbl_a和tbl_b的交互表tbl_a_b:
create table tbl_a_b( a_id int, b_id int, constraint FK_a foreign key(a_id) references tbl_a(a_id), constraint FK_b foreign key(b_id) references tbl_b(b_id), constraint PK_key_a_b primary key(a_id,b_id) );
1.交互表tbl_a_b新增a_id,b_id不为空的数据:
insert into tbl_a_b values(1,10);
新增成功。
2.交互表tbl_a_b新增a_id为空的数据:
insert into tbl_a_b values(null,10);
报错:ORA-01400 a_id不能为空
3.交互表tbl_a_b修改a_id改为null的为空的数据:
update tbl_a_b set a_id=null;
报错:ORA-01407 a_id不能更新为null。
经测试,无法将复合主键中的某一项改为null,只能在tbl_a表与tbl_b表中新增一条无用数据:
insert into tbl_b values(0); insert into tbl_a values(0);
tbl_a表与tbl_b表每次删除数据时,将tbl_a_b中对应的a_id,b_id 值更新为0.
阅读全文
0 0
- 测试以两个外键为复合主键的表,两个外键空值情况
- Hibernate复合主键中其中有主键是引用外键情况下的配置方法
- 为rails添加复合主键和复合外键支持
- 关于复合主键和反射生成两个实体类的问题
- MySQL 创建主键,外键和复合主键的语句
- MySQL 创建主键,外键和复合主键的语句
- MySQL 创建主键,外键和复合主键的语句
- JPA 一对一配置,复合主键均为外键
- 一个表有两个外键指向另一个表的主键:如何区分显示
- SQL--当一张表的两个外键指向同一主键
- 4.复合主键:测试
- update 两个表的情况下
- hibernate复合主键查询主键不能为空的解决方案
- hibernate复合主键查询主键不能为空的解决方案
- 复合主键情况下取出两表不相同的数据
- 具有主键约束的两个表的数据的删除
- 数据结构中:两个表的关联-表的主键
- Hibernate的主键如果为两个参数时的问题一对一单向主键映射注解方式(十四)
- 数据库设计-范式
- 组合的输出
- 使用JS判断移动设备的终端类型(浏览器UserAgent)
- openssl 生成自签名证书
- Itext 导出pdf文件
- 测试以两个外键为复合主键的表,两个外键空值情况
- Java中的各种变量
- Java调用微信扫码支付接口(模式二)
- 用excel公式将表格数据换成sql脚本,新技能get
- 调用织梦搜索功能
- bzoj 3590: [Snoi2013]Quare
- java swing实现斗地主小游戏项目源码
- AS 导入andbase源码
- hhuoj1054_撸猫狂魔