delete from x_Table where type='a';
提示不能删除多行?这咋弄 ? 就是要删除好几行啊
提示不能删除多行?这咋弄 ? 就是要删除好几行啊
解决方案 »
- 用户代码未处理 System.InvalidOperationException
- |zyciis| 200分求:如何将一个对象在多个类或事件中进行传递 谢谢
- 怎样将DropDownList的成员清空成为一个内容为空的下拉列表
- 弱弱的问一下(pr_expire>getdate())有没有语法错误
- 请问我想向数据库中的有联系的表插入数据,最正规的方法是什么?
- 打开项目时web服务器报告错误“操作超时”高手帮忙 急!!
- 求助:请问如何在按下按钮时弹出 “确认”对话框? ( CausesVlidation == true, 并且页面上有Validator )
- 询问下关于Button按钮的问题()急
- 请问怎么写根据Session的值来在页面显示一个Label控件或TextBox控件?
- 从另外一个窗口获取几个字段返回值的问题
- 在VS2008中,图片问题
- 怎么去掉fck 编译器里的html标签?
懂?
你这样写试试呢
Server: Msg 512, Level 16, State 1, Line 6
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
你确定这个异常是因为 delete from x_Table where type='a'; 这一行?你肯定有写了触发器,而触发器代码有bug!
正常情况可以删除,也许还有其他相关联的没有删除比如触发器
USE [Hypnoz]
GO
/****** 对象: Trigger [dbo].[Art_ReplyNum2] 脚本日期: 01/09/2011 17:43:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[Art_ReplyNum2]
on [dbo].[X_art1]
for delete
as
if (select ArtType from deleted)=0
begin
declare @at int
set @at=(select ParentId from deleted)
update x_art1
set X_art1.ReplyNum=X_art1.ReplyNum-1
from X_art1
where X_art1.ArtId=@at
end
第二个
USE [Hypnoz]
GO
/****** 对象: Trigger [dbo].[Art_BoardNum2] 脚本日期: 01/09/2011 17:43:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[Art_BoardNum2]
on [dbo].[X_art1]
for delete
as
declare @BId int,@at int,@new int
set @at=(select BoardId from X_art1 where ArtId=(select ParentId from deleted))
set @BId=(select BoardId from deleted)
if (select ArtType from deleted)=1
begin
update x_board
set x_board.ArticleNum=x_board.ArticleNum-1
where x_board.BoardId=@BId
set @new=(select ParentId from X_Board where BoardId=@BId)
if(@new<>0)
begin
update x_board
set x_board.ArticleNum=x_board.ArticleNum-1
where x_board.BoardId=@new
end
end
else
begin
update x_board
set x_board.ReplyNum=x_board.ReplyNum-1
where x_board.BoardId=@at
set @new=(select ParentId from X_Board where BoardId=@at)
if(@new<>0)
begin
update x_board
set x_board.ReplyNum=x_board.ReplyNum-1
where x_board.BoardId=@new
end
end
set @at=(select ParentId from deleted)
是错误的,deleted表中有多条记录
类似这位仁兄说的,这是个博客系统的,删除博客的时候,连同文章、相册之类的东东都一起删除的触发器,希望对你有用ALTER Trigger [SchoolBlog].[Trigger_del_Blogs]
on [SchoolBlog].[Blogs]
instead of delete
as
BEGIN
declare @Bg_Adress nvarchar(50)
declare @countblog int
declare @countAlbum int
select @Bg_Adress =Bg_Adress from deleted
delete from SchoolBlog.Blogrolls ---删除博友
where Bg_Adress=@Bg_Adress or Br_Adress=@Bg_Adressselect @countblog=count(*) from SchoolBlog.ArticleType where Bg_Adress=@Bg_Adress
while (@countblog>0)
begin
delete from SchoolBlog.ArticleType ----删除日志类型
where Bg_Adress=@Bg_Adress
set @countblog=@countblog-1
end
select @countAlbum=count(*) from SchoolBlog.Album where Bg_Adress=@Bg_Adress
while (@countAlbum>0)
begin
delete from SchoolBlog.Album ----删除相册
where Bg_Adress=@Bg_Adress
set @countAlbum=@countAlbum-1
end
delete from SchoolBlog.Files -----删除文件
where Bg_Adress=@Bg_Adress
delete from SchoolBlog.MessageBoard ----删除留言
where Bg_Adress =@Bg_Adress
delete from SchoolBlog.Blogs ---删除博客
where Bg_Adress=@Bg_Adress
END