sql 触发器的问题是否需要遍历临时表Deleted?怎么做?
时间:2011-12-23
来源:互联网
如题:最近刚开始研究触发器的例子!首先做了个2个表关联的例子正确,但是3个表就错误了!
先是2个表时
省表
Provinceid Provincename
1 黑龙江
2 吉林
市表
cityid cityname Provinceid
1 哈尔滨 1
2 牡丹江 1
这样时删除省表Provinceid=1时 市表Provinceid=1也删除了
后来我又加了个
县表County
Countyid Countyname cityid
1 尚志 1
2 阿城 1
现在如果删除市表cityid=1县表cityid=1也删除 但是如果删除省表Provinceid=1时提示约束错误,但如果市表中只有一个属于省表的数据就正确,所以我估计是删除市表中省表Provinceid=1时数据不完全
我的省表触发器代码是这样的:
SQL code
市表
SQL code
先是2个表时
省表
Provinceid Provincename
1 黑龙江
2 吉林
市表
cityid cityname Provinceid
1 哈尔滨 1
2 牡丹江 1
这样时删除省表Provinceid=1时 市表Provinceid=1也删除了
后来我又加了个
县表County
Countyid Countyname cityid
1 尚志 1
2 阿城 1
现在如果删除市表cityid=1县表cityid=1也删除 但是如果删除省表Provinceid=1时提示约束错误,但如果市表中只有一个属于省表的数据就正确,所以我估计是删除市表中省表Provinceid=1时数据不完全
我的省表触发器代码是这样的:
SQL code
CREATE TRIGGER [dbo].[Province_del] ON [dbo].[Province] Instead Of DELETE AS BEGIN declare @ID bigint Select @ID=Provinceid from Deleted Delete From city where Provinceid=@ID Delete From Province where Provinceid=@ID END
市表
SQL code
CREATE TRIGGER [dbo].[city_del] ON [dbo].[city] Instead Of DELETE AS BEGIN declare @ID bigint Select @ID=cityid from Deleted Delete From County where cityid=@ID Delete From city where cityid=@ID END
作者: liu415630922tao 发布时间: 2011-12-23
如果省表一次更新多笔记录,触发器里要有游标读取inserted和deleted表,
实现起来有些复杂喔, 建议更新省表的同时, 以SQL语句同时更新市表和县表即可.
达到相同目的, 而且最简单.
实现起来有些复杂喔, 建议更新省表的同时, 以SQL语句同时更新市表和县表即可.
达到相同目的, 而且最简单.
作者: ap0405140 发布时间: 2011-12-23
做级联删除就行了.
作者: xuam 发布时间: 2011-12-23
这种事情最好不要做触发器,设置好外键,用级联删除就行了.
作者: qianjin036a 发布时间: 2011-12-23
lz的判断是没错的。
SQL Server中的触发器与Oracle数据库中的触发器不同。
SQL Server中的触发器不是逐条执行的。
如果定义一个游标遍历Deleted表,应该就没错了。
或者用其他方式遍历也可以。
SQL Server中的触发器与Oracle数据库中的触发器不同。
SQL Server中的触发器不是逐条执行的。
如果定义一个游标遍历Deleted表,应该就没错了。
或者用其他方式遍历也可以。
作者: dielianhua_chenlong 发布时间: 2011-12-23
你保证删除的次序正确就可以了,也就是说省包含地区,地区包含县,增加时是先有省再有地区再有县,删时是先删县再地区再省,级联删除就是这么干的。
在TRIGGER里用游标是前端写UI的写法,数据库的操作基础就是集合操作,遍历不是数据库的长处。
在TRIGGER里用游标是前端写UI的写法,数据库的操作基础就是集合操作,遍历不是数据库的长处。
作者: yanyuchonglou 发布时间: 2011-12-23
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28