触发器问题??

yuzhifu1 2009-11-21 01:57:14
我要把T2中的供应商名称插入T1的备注字段中写的触发器,但是不起作用,朋友们帮忙给看看哪不对,先谢谢!!!
CREATE  TRIGGER icstockbillentry_001 ON dbo.icstockbillentry
FOR INSERT,Update
AS
Update t1 set t1.fnote=t2.fsupplyidname
from icstockbillentry t1
inner join icstockbill t4 on t4.finterid=t1.finterid and t4.ftrantype=41
inner join (select d.fitemid,max(c.fsupplyidname) as fsupplyidname,max(c.fdate) as fdate from vwicbill_1 c inner join t_icitem d
on d.fnumber=c.ffullnumber group by d.fitemid) t2 on t2.fitemid=t1.fitemid
inner join inserted t3 on t3.fitemid=t1.fitemid
...全文
78 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
icelovey 2009-11-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yuzhifu1 的回复:]
引用 2 楼 icelovey 的回复:
引用楼主 yuzhifu1 的回复:
我要把T2中的供应商名称插入T1的备注字段中写的触发器,但是不起作用,朋友们帮忙给看看哪不对,先谢谢!!!
SQL codeCREATETRIGGER icstockbillentry_001ON dbo.icstockbillentryFORINSERT,UpdateASUpdate t1set t1.fnote=t2.fsupplyidnamefrom  icstockbillentry t1innerjoin icstockbill t4on t4.finterid=t1.finteridand t4.ftrantype=41innerjoin (select  d.fitemid,max(c.fsupplyidname)as fsupplyidname,max(c.fdate)as fdatefrom vwicbill_1 cinnerjoin t_icitem don d.fnumber=c.ffullnumbergroupby d.fitemid) t2on t2.fitemid=t1.fitemidinnerjoin inserted t3on t3.fitemid=t1.fitemid


怎么你在icstockbillentry上面建的触发器, 触发器里面更新还是更新icstockbillentry这个TABLE
不会出问题吗?



我是在录入icstockbillentry表时想自动在其中的一列插入内容,这种情况触发器好象不能建在别的表上吧?
[/Quote]
那你可以在插入值的时候就把fnote的值计算好, 一起插进去~
yuzhifu1 2009-11-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 icelovey 的回复:]
引用楼主 yuzhifu1 的回复:
我要把T2中的供应商名称插入T1的备注字段中写的触发器,但是不起作用,朋友们帮忙给看看哪不对,先谢谢!!!
SQL codeCREATETRIGGER icstockbillentry_001ON dbo.icstockbillentryFORINSERT,UpdateASUpdate t1set t1.fnote=t2.fsupplyidnamefrom  icstockbillentry t1innerjoin icstockbill t4on t4.finterid=t1.finteridand t4.ftrantype=41innerjoin (select  d.fitemid,max(c.fsupplyidname)as fsupplyidname,max(c.fdate)as fdatefrom vwicbill_1 cinnerjoin t_icitem don d.fnumber=c.ffullnumbergroupby d.fitemid) t2on t2.fitemid=t1.fitemidinnerjoin inserted t3on t3.fitemid=t1.fitemid


怎么你在icstockbillentry上面建的触发器, 触发器里面更新还是更新icstockbillentry这个TABLE
不会出问题吗?

[/Quote]

我是在录入icstockbillentry表时想自动在其中的一列插入内容,这种情况触发器好象不能建在别的表上吧?
icelovey 2009-11-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 feixianxxx 的回复:]
引用 8 楼 icelovey 的回复:
引用 7 楼 feixianxxx 的回复:
引用 6 楼 icelovey 的回复:
引用 5 楼 feixianxxx 的回复:
引用 4 楼 icelovey 的回复:
SQL codeCREATETRIGGER icstockbillentry_001ON dbo.icstockbillentryFORINSERT,UpdateASUpdate t1set t1.fnote=t2.fsupplyidnamefrom  icstockbillentry t1innerjoin icstockbill t4on t4.finterid=t1.finteridand ?-

TOP 加油


收徒弟么??我想拜师~~

找那些大牛去。。
星星多 不代表什么
自己也在学习中
所以做不了师傅
多在论坛抢吧
抢多了 自然这些SQL语句能很好的掌握的。

一步步来吧

CSDN对于练SQL语句很不错的

这倒是, 就算回答不赢人家, 至少熟练了这些语句的写法, 遇到不会的还可以看高手怎么写
就算会的也可以看看高手还有什么巧妙的方法..确实在CSDN能学到很多东西

总之加油吧
师傅找不到 也没事
自己琢磨 练习
你应该工作了吧?
实践中 成长才快

羡慕工作的人
[/Quote]
有什么好羡慕的, 读书的时光才是最好的, ..
feixianxxx 2009-11-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 icelovey 的回复:]
引用 7 楼 feixianxxx 的回复:
引用 6 楼 icelovey 的回复:
引用 5 楼 feixianxxx 的回复:
引用 4 楼 icelovey 的回复:
SQL codeCREATETRIGGER icstockbillentry_001ON dbo.icstockbillentryFORINSERT,UpdateASUpdate t1set t1.fnote=t2.fsupplyidnamefrom  icstockbillentry t1innerjoin icstockbill t4on t4.finterid=t1.finteridand ?-

TOP 加油


收徒弟么??我想拜师~~

找那些大牛去。。
星星多 不代表什么
自己也在学习中
所以做不了师傅
多在论坛抢吧
抢多了 自然这些SQL语句能很好的掌握的。

一步步来吧

CSDN对于练SQL语句很不错的

这倒是, 就算回答不赢人家, 至少熟练了这些语句的写法, 遇到不会的还可以看高手怎么写
就算会的也可以看看高手还有什么巧妙的方法..确实在CSDN能学到很多东西
[/Quote]
总之加油吧
师傅找不到 也没事
自己琢磨 练习
你应该工作了吧?
实践中 成长才快

羡慕工作的人
icelovey 2009-11-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 feixianxxx 的回复:]
引用 6 楼 icelovey 的回复:
引用 5 楼 feixianxxx 的回复:
引用 4 楼 icelovey 的回复:
SQL codeCREATETRIGGER icstockbillentry_001ON dbo.icstockbillentryFORINSERT,UpdateASUpdate t1set t1.fnote=t2.fsupplyidnamefrom  icstockbillentry t1innerjoin icstockbill t4on t4.finterid=t1.finteridand ?-

TOP 加油


收徒弟么??我想拜师~~

找那些大牛去。。
星星多 不代表什么
自己也在学习中
所以做不了师傅
多在论坛抢吧
抢多了 自然这些SQL语句能很好的掌握的。

一步步来吧

CSDN对于练SQL语句很不错的
[/Quote]
这倒是, 就算回答不赢人家, 至少熟练了这些语句的写法, 遇到不会的还可以看高手怎么写
就算会的也可以看看高手还有什么巧妙的方法..确实在CSDN能学到很多东西
feixianxxx 2009-11-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 icelovey 的回复:]
引用 5 楼 feixianxxx 的回复:
引用 4 楼 icelovey 的回复:
SQL codeCREATETRIGGER icstockbillentry_001ON dbo.icstockbillentryFORINSERT,UpdateASUpdate t1set t1.fnote=t2.fsupplyidnamefrom  icstockbillentry t1innerjoin icstockbill t4on t4.finterid=t1.finteridand ?-

TOP 加油


收徒弟么??我想拜师~~
[/Quote]
找那些大牛去。。
星星多 不代表什么
自己也在学习中
所以做不了师傅
多在论坛抢吧
抢多了 自然这些SQL语句能很好的掌握的。

一步步来吧

CSDN对于练SQL语句很不错的
icelovey 2009-11-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 feixianxxx 的回复:]
引用 4 楼 icelovey 的回复:
SQL codeCREATETRIGGER icstockbillentry_001ON dbo.icstockbillentryFORINSERT,UpdateASUpdate t1set t1.fnote=t2.fsupplyidnamefrom  icstockbillentry t1innerjoin icstockbill t4on t4.finterid=t1.finteridand ?-

TOP 加油
[/Quote]

收徒弟么??我想拜师~~
feixianxxx 2009-11-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 icelovey 的回复:]
SQL codeCREATETRIGGER icstockbillentry_001ON dbo.icstockbillentryFORINSERT,UpdateASUpdate t1set t1.fnote=t2.fsupplyidnamefrom icstockbillentry t1innerjoin icstockbill t4on t4.finterid=t1.finteridand ?-
[/Quote]
TOP 加油
icelovey 2009-11-21
  • 打赏
  • 举报
回复

CREATE TRIGGER icstockbillentry_001 ON dbo.icstockbillentry
FOR INSERT,Update
AS
Update t1
set t1.fnote=t2.fsupplyidname
from icstockbillentry t1 inner join icstockbill t4 on t4.finterid=t1.finterid and t4.ftrantype=41
inner join (
select d.fitemid,max(c.fsupplyidname) as fsupplyidname,max(c.fdate) as fdate
from vwicbill_1 c inner join t_icitem d on d.fnumber=c.ffullnumber
group by d.fitemid
) t2 on t2.fitemid=t1.fitemid
inner join inserted t3 on t3.fitemid=t1.fitemid

语句看上去是没什么错误, 但是你要确保几个INNER JOIN 之后, 会不会删选掉必要的值
另外应该不能在自身TABLE上的触发器里面更新自己的TABLE吧,感觉不会死循环了?
yujiang930 2009-11-21
  • 打赏
  • 举报
回复
你先吧update语句拿出来查询一下看看就知道了,自己调试一下,语句没有问题
icelovey 2009-11-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 yuzhifu1 的回复:]
我要把T2中的供应商名称插入T1的备注字段中写的触发器,但是不起作用,朋友们帮忙给看看哪不对,先谢谢!!!
SQL codeCREATETRIGGER icstockbillentry_001ON dbo.icstockbillentryFORINSERT,UpdateASUpdate t1set t1.fnote=t2.fsupplyidnamefrom icstockbillentry t1innerjoin icstockbill t4on t4.finterid=t1.finteridand t4.ftrantype=41innerjoin (select d.fitemid,max(c.fsupplyidname)as fsupplyidname,max(c.fdate)as fdatefrom vwicbill_1 cinnerjoin t_icitem don d.fnumber=c.ffullnumbergroupby d.fitemid) t2on t2.fitemid=t1.fitemidinnerjoin inserted t3on t3.fitemid=t1.fitemid
[/Quote]

怎么你在icstockbillentry上面建的触发器, 触发器里面更新还是更新icstockbillentry这个TABLE
不会出问题吗?
dawugui 2009-11-21
  • 打赏
  • 举报
回复
set t1.fnote=t2.fsupplyidname

-->

set fnote=t2.fsupplyidname

如果不是这个错误,就是你的后面的连接写错了.

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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