为什么执行delete from 表tb,只能删掉一行?

etherealkite 2008-07-25 08:57:15
数据库中有一个表tb,这个表没有与其它表建立关系,也无索引,无主键,无约束,在查询分析器执行delete from tb语句时,它却只能删除数据库中的一行,此表有多少行,也就要执行多少次delete from tb语句才能完全删除此表的内容,这是为什么?
这个表有一个替代型的删除触发器,就是先删除另一个与此表相关的内容,再删除此表tb的内容(tb表共有13行,另一表也是13行,与这个表有一一对应的关系)
在查询分析器中第1次执行delete from tb出现的结果为:tb表与另一个表各删除掉了一行
(所影响的行数为 1 行)
(所影响的行数为 12 行)
第2次执行delete from tb的结果为:tb表与另一个表各删除掉了一行
(所影响的行数为 1 行)
(所影响的行数为 11 行)
......
执行了第13次的时候两个表刚好删完
(所影响的行数为 1 行)
(所影响的行数为 1 行)为什么会这样?不能一次完全删除?
...全文
310 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzy_love_sly 2008-07-25
  • 打赏
  • 举报
回复
你用的select ,删除一条可以
批量的就得用join 或exists删除,select 只能取到你删除的数据的最后一条的@col=tb1_col
etherealkite 2008-07-25
  • 打赏
  • 举报
回复
谢谢happyflystone,的确如此,现在可以全删了,可以帮我解释一下为什么要你这样写才行吗?我没弄明白,本来我要给贴子加分的,可是提示要发贴一天后才可加分,不好意思了!
wzy_love_sly 2008-07-25
  • 打赏
  • 举报
回复
恩 可能..
-狙击手- 2008-07-25
  • 打赏
  • 举报
回复
CREATE TRIGGER [del_frmright] ON [dbo].[tb1]
instead of DELETE--替代型触发器
AS
begin
-- declare @col varchar(50)
-- select @col=tb1_col from deleted
delete a
from tb2 a
where exists(select 1 from deleted where col = a.col) --tb2_col=@col--先删tb2中的
delete a
from tb1 a
where exists(select 1 from deleted where col = a.col) --tb1_col=@col--后删tb1中的
end

go

----

CREATE TRIGGER [del_frmright] ON [dbo].[tb1]
for DELETE--替代型触发器
AS
begin

delete a
from tb2 a
where exists(select 1 from deleted where col = a.col) end

go


etherealkite 2008-07-25
  • 打赏
  • 举报
回复
CREATE TRIGGER [del_frmright] ON [dbo].[tb1]
instead of DELETE--替代型触发器
AS
begin
declare @col varchar(50)
select @col=tb1_col from deleted
delete from tb2 where tb2_col=@col--先删tb2中的
delete from tb1 where tb1_col=@col--后删tb1中的
end
说明:另一个表是tb2
这么简单的触发器,我应该没有写错吧!为什么会这样,高人请指教,谢谢!
-狙击手- 2008-07-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wzy_love_sly 的回复:]
set rowcount 1

执行过这个?
[/Quote]

不像 是,应该触发器
wzy_love_sly 2008-07-25
  • 打赏
  • 举报
回复
set rowcount 1

执行过这个?
hery2002 2008-07-25
  • 打赏
  • 举报
回复
这个表有一个替代型的删除触发器,就是先删除另一个与此表相关的内容,再删除此表tb的内容(tb表共有13行,另一表也是13行,与这个表有一一对应的关系)
---------------------
多半是这个的问题
-狙击手- 2008-07-25
  • 打赏
  • 举报
回复
贴角本来看看
-狙击手- 2008-07-25
  • 打赏
  • 举报
回复
那多半是你的触发器问题呀

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧