| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 792 人关注过本帖
标题:[分享]关于级联更新与删除的一点总结,呵呵,不要笑话
取消只看楼主 加入收藏
ninggang
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:637
专家分:0
注 册:2006-11-1
结帖率:40%
收藏
 问题点数:0 回复次数:1 
[分享]关于级联更新与删除的一点总结,呵呵,不要笑话

<1>级联更新也就是主表的更新、删除等都会对外表产生相应的更新、删除

级联更新相关数据字段
在外键定义的时候加 ON UPDATE CASCADE

指定如果试图更新某行中的键值,而该行的键值由其它表的现有行中的外键所引用,则所有外键值也将更新成为该键指定的新值。如果在目标表上也定义了级联引用操作,则对在那些表中更新的键值同样采取指定的级联操作。

例:

create table dep( --部门表
id int not null CONSTRAINT PK_dep_id PRIMARY KEY NONCLUSTERED,
name varchar(50)
)
go

create table employee( --员工表
id int not null CONSTRAINT PK_emp_id PRIMARY KEY NONCLUSTERED,
name varchar(50),
depid int not null,
CONSTRAINT FK_employee_dep FOREIGN KEY (depid)
REFERENCES dep (id) ON UPDATE CASCADE
)
记住:
在外键定义的时候加 ON DELETE CASCADE
指定如果试图删除某行,而该行含有由其它表的现有行中的外键所引用的键,则也将删除所有包含那些外键的行。如果在目标表上也定义了级联引用操作,则对从那些表中删除的行同样采取指定的级联操作。
<2>触发器方式:
create trigger trg_A
on A
for update,delete
as
begin
if exists(select 1 from inserted)
update B set Name=(select Name from inserted) where Name=(select Name from deleted)
else
delete B where Name=(select Name from deleted)
end
go


要使用级联性更新和删除,用户可以在Alter TABLE 语句的CONSTRAINT子句中使用ON Update CASCADE 和/或 ON Delete CASCADE 关键字。注意他们都必须是应用于外键的。

级联更新和级联删除方式:
Alter TABLE [dbo].[T_USERGROUP] ADD
CONSTRAINT [FK_T_USERGROUP_T_ACCTTEMPLATE] FOREIGN KEY
(
[ATNAME]
) REFERENCES [dbo].[T_ACCTTEMPLATE] (
[ATNAME]
) ON Update CASCADE ON Delete CASCADE
实际上两者的本质是一样的,因为在企业管理器选种复选筐的时候,就相当于执行了命令操作
推而广之,在企业管理器中的操作,在查询分析器中基本上都可以完成,建议用查询分析器,因为有更高的灵活性,当
大家在应用程序端访问数据库的时候,就可以体会到好处了,呵呵

搜索更多相关主题的帖子: 笑话 级联 删除 分享 
2006-12-26 21:45
ninggang
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:637
专家分:0
注 册:2006-11-1
收藏
得分:0 
呵呵,没有什么,大家一起努力,互相帮忙,让论坛越来越好,哈哈

大家一起努力,共同打造未来!!
2006-12-27 08:32
快速回复:[分享]关于级联更新与删除的一点总结,呵呵,不要笑话
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016348 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved