当前位置:首页 » 网络管理 » 为什么要级联删除
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

为什么要级联删除

发布时间: 2022-03-08 05:07:40

1. 怎样用sql语言修改一个表,为它添加外键约束,要求允许级联修改,不允许级联删除

alter table 表
add constraint fk_name foreign key(约束列)
references 主表(约束列)
on update cascade
on delete no action

2. SQL sever中要删除两个相关联的表该怎么进行级联删除

------解决方案-------------------------------------------------------- --1、建立一个触发器(推荐)
create trigger on p for deleteas �0�2delete from spj where pno = (select pno from deleted)go--执行删除delete from p where pname='螺丝'
--2、级联删除
alter table p add constraint pk_p_id primary key (pno)go--为tb创建外健,并指定级联删除
alter table spj add constraint fk_spj_aid foreign key (pno) references p(pno) on delete cascadego------解决方案----------------------------------------------------------推荐触发器控制,可控性比较强
SQL code --1、建立一个触发器(推荐) create trigger on p for delete as delete from spj where pno = (select pno from deleted) go --执行删除 delete from p where pname='螺丝' --2、级联删除 alter table p add constraint pk_p_id primary key (pno) go --为tb创建外健,并指定级联删除 alter table spj add constraint fk_spj_aid foreign key (pno) references p(pno) on delete cascade go
------解决方案--------------------------------------------------------建立测试数据
SQL code if object_id('dbo.SPJ') is not null drop table dbo.SPJ; go if object_id('dbo.P') is not null drop table dbo.P; go create table dbo.P ( pno int not null primary key, pname nvarchar(20) not null ); go create table dbo.SPJ ( sno int not null primary key, pno int not null ); insert into dbo.P select 1, 'type-a' union all select 2, 'type-b' union all select 3, 'type-c'; go insert into dbo.SPJ select 1, 1 union all select 2, 1 union all select 3, 1 union all select 4, 2 union all select 5, 3 union all select 6, 3; go
------解决方案--------------------------------------------------------建议用外键约束
先删除子表在删除父表
------解决方案-------------------------------------------------------- �0�2个人建议用事务处理。

3. 级联删除时是不是一定要有ADD CONSTRAINT这句话来建立外键,如果外键已经存在呢如图

外键已经存在的情况下,先把之前的删掉,然后重新创建

4. 级联更新时为什么会级联删除

数据库触发器里设置,默认级联更新级联删除。你是什么数据库,sql2000里有设置,有选择的项。

5. 为什么网上删除级联表之间的数据是在程序中同时操作而不是在数据库中建立删除关系

因为级联删除有时候是很可怕的,一不小心会删掉你不要删除的东西,有些必须删除的数据但又有约束关系时才用的。

希望我的回答可以帮到你。

6. 为什么cascade设置为all还是不能级联删除

inverse="true"
放弃维护关系你设置为true那当然是不会帮你做级联删除了,
另外象一对多这样的,Hibernate建议是让一的这一端放弃维护关系,让多的一端来维护

7. 请教 单向的many-to-one 要实现级联删除的效果都有那些方法

就是说我删除User的相应数据,Room不应该删除相应的数据,因为还有可能有别的user关联着room,但我一但删除了Room,就应该把所关联的User对象都一并删除掉。
我的问题跟这个差不多
这个可以看数据库本身的功能,如oracle,两个库的关系可以设置 delete on cascade,这样,删除父表数据的时候,子表的统统删光。 sqlserver也有相同的功能,具体的做法请查相应的手册
网上找了很久,只找到双向的,单向的好像说不可以,cascade都没用,
这个可以看数据库本身的功能,如oracle,两个库的关系可以设置 delete on cascade,这样,删除父表数据的时候,子表的统统删光。 sqlserver也有相同的功能,具体的做法请查相应的手册
把关系反过来
Room-user建立 one-to-many关系
那样跟我的本意就相反了,我是想让每个user有个room ID,而不是让每个room里面有所有user
把关系反过来
Room-user建立 one-to-many关系
这个还真不知道 应该不行吧
如果是那样的话,只好自己用hql处理一下了
我觉得这个问题你是应该在数据库端解决的吧。
在数据库设置 delete on cascade 就可以了。。。
个人觉得还是淡化数据库关系

8. 关于hibernate 级联删除方式的疑问,为什么需要多条delete语句

hibernate就是这样操作的。没有update语句已经蛮好了,要求不要太高

9. 很纠结!!!SQL Server数据库中的表到底要不要设置级联删除和级联添加

如果逻辑需要一定要设置,这样可以省很多事,还不易出错

10. 请问SQL数据库中有一个表中的两个字段,同时关联另一个表中的同一个字段,要使它级联删除应该怎么做

SQL的外键约束可以实现级联删除与级联更新;

ORACLE则只充许级联删除。

SQL级联删除与级联更新使用格式:
CREATE TABLE A001(ID INT PRIMARY KEY,NAME VARCHAR(20))
CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE ON UPDATE CASCADE,AGE TINYINT)

ORACLE级联删除使用格式:
CREATE TABLE A001(ID INT PRIMAY KEY,NAME VARCHAR2(20))
CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE,AGE NUMBER(2,0))