lzth.net
当前位置:首页 >> orAClE 可不可以给已定义的外键或主键约束添加级联... >>

orAClE 可不可以给已定义的外键或主键约束添加级联...

那就不用了外键约束了,直接将这ID1列值域默认为sortID为1时的ID的值,ID2列值域默认为sortID为2时的ID的值……但是这样必须写触发器,当修改A的SortID值时及时修改B中的ID1和ID2的值,否则会出现更新异常……造成数据不一致

如果在定义外键引用关系时定义了级联删除,那么在删除主键表的记录时,会同时删除与其相关联的外键记录.比如有:学生表(学号,姓名,性别,年龄),主键为学号;成绩表(学号,课程号,成绩),学号引用学生表的学号.如果在定义外键引用约束时,如果定义了级联删除,那么删除某个学生信息时,同时会删除这个学生的修课成绩.比如删除张三这个学生,同时会删除张三所有课程的成绩记录;如果在定义外键引用约束时,没有定义级联删除,那么删除某个学生信息时,如果这个学生有修课成绩,系统不会允许删除这个学生的信息.

系统中要删除一条记录,就要关联到同时删除好多张表,它们之间还存在着约束关系.所以考虑到在创建表时加上约束关系,详细内容如下: SQL的外键约束可以实现级联删除与级联更新; ORACLE则只充许级联删除. SQL级联删除与级联更

主键:ALTER TABLE A ADD CONSTRAINT PK_XXX PRIMARY KEY (XXX)外键;ALTER TABLE B ADD CONSTRAINT FK_YYY FOREIGN KEY(YYY) REFERENCES A(XXX)B表的YYY字段 引用A表的XXX字段值域为自身值域主键约束,外键约束就是这样建立的删除约束: ALTER TABLE A DROP CONSTRAINT 约束名

设定外键为级联删除就可以了.alter table b add constraint fk_id foreign key (id) references a(id) on delete cascade;这样只需:delete from a where id=nnnn; 就可以自动删除对应b表内容了.通过外键无法实现同步更新.

alter table ** drop constraint fk_cId alter table ** add constraint fk_cId foreign key (id) references classes(id) on delete cascade

主键就是自己设定的字段,该字段不能为空,而且该字段的值必须唯一,外键就是在主表中可以重复出现,但是它是另一个表的主键,对过外键使两个表相关.

主键是唯一证明,在茫茫人海中,怎么区分你和别人呢.通过身份证(当然也有别的,指纹之类的).每个身份证号都是唯一的.不可能有两个人有同一个身份证号(理论上).外键相当于引用别人的主键.比如说你买房子,有房产证.那个房产证上要有你的身份证号.这里,你的身份证号就成了外键唯一性约束.就是强制性要求,在范围内(一张表)该列的值不能重复.是唯一的.主键必然是唯一的.e.gA B1 x2 x上表B列就不满足唯一性约束(x有两个),视图,就是在表之上抽取出来的.基于表,没有物理结构,不实际存储数据.比如你属于一个很大的家族x的成员.然后你,你父母又是一个小的单位y.这样y就相当于从x根据某种条件筛选中的视图.

1 可以2 也可以不用触发器,用存储过程也可以. 页面点击删除,调用一个存储过程. 存储过程中把两个delete语句写在一起.delete from student .delete from grade .commit; (这两句就相当于一个事务)异常处理中写rollback,以防有问题删除不成功可以回滚.

Oracle数据库中的主键:表示一张表中记录的唯一性,不能有重复.外键:一个属性的值是另外一个表中的属性,大多数也是另外一个标主键.约束:对某一个属性的取值的约束,例如年龄大于0小于100.

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.lzth.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com