棘手问题
我要写一个触发器,让它根据当前表的一个字段(receiver_code)的不同值(‘A’,‘B’,‘C’,‘D’),到另一个表中得到以这个值(A,B,C,D)为字段名的值。我不记的SQL中有字符转化为字段值的函数。用什么办法解决哪。
代码意思如下
create trigger tabtr on table1
for insert
as
if @@rowcount>0
begin
declar @receiver_code varchar(10),@code varchar(35)
select @receiver_code=isnull(receiver_code,'') from inserted
--下面的这句是这个意思,但逻辑错识
select @code=@receiver_code(字段名) from table2
--请大家帮忙出一个好的写法
...........
end
问题点数:40、回复次数:8Top
1 楼byrybye(阿水)回复于 2002-11-28 09:55:26 得分 8
好象不能实现吧,呵呵,
除非用动态SQL
就是用什么EXEC
不过我没有在触发器里写过,
你试试看
Top
2 楼zyh9188(星火)回复于 2002-11-28 10:06:02 得分 2
upTop
3 楼kaikaikai(凯凯凯)回复于 2002-11-28 10:12:18 得分 0
你的意思是再写一个存储过程了。触发时调用(exec)?
Top
4 楼tj_dns(愉快的登山者)回复于 2002-11-28 10:26:05 得分 30
select @code= case @receiver_code
when‘A’then itemA
when 'B' then itemB
when 'C' then itemC
when 'D' then itemD end
from table2Top
5 楼kaikaikai(凯凯凯)回复于 2002-11-28 10:45:38 得分 0
tj_dns(愉快的登山者) :
这样的话 temA 不可为字段了。它为一存储过程了。我试了。“报找不到ITEMA 存储过程"。
Top
6 楼tj_dns(愉快的登山者)回复于 2002-11-28 12:00:50 得分 0
itemA只是一个字段的例子,改为你自己的字段名即可。Top
7 楼kaikaikai(凯凯凯)回复于 2002-11-28 17:01:19 得分 0
tj_dns(愉快的登山者) :
这样的话 temA 不可为字段了。它为一存储过程了。我试了。“报找不到ITEMA 存储过程 "。
我明的你的意思,可在这个then 后系统就视它为存储过程
Top
8 楼byrybye(阿水)回复于 2002-11-28 18:19:49 得分 0
呵呵找到了,不是了,
我的意思是这样的了,
比如说‘A’
给变量 @COLUMN
那么
你从第二个表查数据的语句应该是
SELECT A FROM TABLE 2
但这是不行
只能这样
EXEC ‘SELECT ’+ @COLUMN +'FROM TABLE 2 WHERE ....'
这样能理解吧,不过在触发器这么做,我也没有做过,
祝 好运 ^-^
Top




