sql怎么动态表示删除语句where之后的条件
想创建一个触发器,当表内没有该数据的时候提醒你,所以怎样动态表示删除操作where之后的条件语句...
想创建一个触发器,当表内没有该数据的时候提醒你,所以怎样动态表示删除操作where之后的条件语句
展开
1个回答
2015-10-30
展开全部
如:
declare @sql nvarchar(500),@where nvarchar(200)
--@where根据条件设置此参数的值
if len(@where)>0
begin
set @sql='delete from mytable where '+@where
end
else
begin
set @sql=''
end
exec(@sql)
declare @sql nvarchar(500),@where nvarchar(200)
--@where根据条件设置此参数的值
if len(@where)>0
begin
set @sql='delete from mytable where '+@where
end
else
begin
set @sql=''
end
exec(@sql)
追问
这是一个学生表,要删除学生表内的一些数据而且这个删除语句的where可以是动态
create trigger delete_stu
on student for delete
as if(exists (select* from Student where sno='202215216')) print('你删除了一条数据!')
else print('抱歉!删除不成功,表内没有该数据')
追答
lz的目的是想在删除操作后,不管成功与否均返回相应的消息?这个没有必要在触发器里面操作,完全可以在执行删除的按钮功能里面做。(另外,当不存在该行数据时,点击删除是不会调用到触发器的,你可以测试一下看看 ) 。如下代码供参考:
private String Delete(String sNo)
{
String sql="delete from Student where sno=@sno";
String sConnectionString="";//连接串内容自定义
SqlConnection cn=new SqlConnection(sConnectionString);
SqlCommand cmd=new SqlCommand(sql,cn);
cmd.Parameters.AddValues("@sno",sNo);
if (cn.State != ConnectionState.Open)
cn.Open();
try{
int i=cmd.ExecuteNonQuery();
if(i>0)
{
return "你删除了一条数据!";
}
else
{
return "抱歉!删除不成功,表内没有该数据";
}
}
catch{}
finally
{
if (cn.State != ConnectionState.Closed)
cn.Close();
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询