sql触发器能否通过C#程序来传参数

来源:百度知道 编辑:UC知道 时间:2024/05/30 07:39:36
比如
create trigger tr_Integral_grade on Integrals
for update
as
declare @Integral_mark int,@id int
select @Integral_mark=Integral_mark ,@id=Integral_id from inserted
update integrals SET Integral_grade = cast(right(@Integral_mark/150,2) as int)+1 where Integral_id=@id
go
我想把cast(right(@Integral_mark/150,2)这个在网站后台给值
谢谢会的大侠们帮帮忙吧!
谢谢了,我想我的想别的办法了.

触发器是数据库后台的对像,不能与前台应用程序之间进行直接的交互!它也没有参数的。

硬要说办法,倒也不是说没有,虽然我也不建议这么做(因为触发器的作用是用来确保数据的一致性,不应该在其中做入业务逻辑相关的东西,会影响效率,也不规范,且有很多其他的问题隐患)
办法的思路是:先由前台程序把要用到的参数数值保存到一个数据表中,可能还要增加一些附加信息以确保触发器运行时能准备取到这个数值;然后在触发器中加入是否需要读取这个数据的语句,根据情况来取这个数据。

唉,听兄弟我一句,最好别在触发器上这么干,还是想其他方案吧。

触发器是在特定时间自动运行的。
我认为不能给它传参数

触发器是写好了的,怎么还需要参数呢?
只要是对触发器所关联的数据表发生改变自动触发,程序获取触发器信息倒应该可以

不行

你的触发器。。。
你是想在INSERT Integrals的时候UPDATE Integrals吧?
那你前面怎么是
create trigger tr_Integral_grade on Integrals
for update --这里应该是 for insert吧

而且对于同一张表不用触发器吧
你insert的时候插 insert into Integrals (Integral_mark,Integral_id,Integral_grade) values (@Integral_mark,(cast(right(@Integral_mark/150,2) as int)+1),@id)就可以了吧
这里你INSERT的时候既然可以得到@Integral_mark,自然也能得到
cast(right(@Integral_mark/150,2) as int)+1啊,触发器都省了。