免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3469 | 回复: 7
打印 上一主题 下一主题

一个触发器,请各位大虾指点... [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2002-01-16 17:33 |只看该作者 |倒序浏览
CREATE TRIGGER [tr_planbalance] ON [payout]
FOR  UPDATE, INSERT,DELETE
AS
Begin
        Declare @payoutmoney_inserted numeric(12,2)--拨付金额
        Declare @payoutmoney_deleted  numeric(12,2)
        Declare @plancode_inserted    char(--计划编码
        Declare @plancode_deleted     char(
        Declare @InsertedCount               int
        Declare @DeletedCount               int
        Set @InsertedCount=(Select Count(*) from inserted)
        Set @DeletedCount=(Select Count(*) from deleted)
        If @InsertedCount>0   --插入
        Set @payoutmoney_inserted=(Select payoutmoney from inserted)
        If @DeletedCount>0    --删除
        Set @payoutmoney_deleted=(Select payoutmoney from deleted)
        Update project_plan Set planbalance=planbalance+@payoutmoney_inserted-@payoutmoney_deleted
       
End

思路:一个计划分多次拨付,每次拨付金额改变后,计划余额需要做相应的改变。

请zhuzhichao 及各位大虾指点!我应该怎么修改及完善它。

论坛徽章:
0
2 [报告]
发表于 2002-01-18 08:56 |只看该作者
Set @DeletedCount=(Select Count(*) from deleted)
和你问的另一个问题一样,这句话也是不对的
后面的语句类似

论坛徽章:
0
3 [报告]
发表于 2002-01-18 13:36 |只看该作者
谢谢鱼哥!
我该怎么弄!
拜托!
比较急!
SQL SERVER7。0触发器怎么这么不好用.

论坛徽章:
0
4 [报告]
发表于 2002-01-18 19:34 |只看该作者
同志,不要将一个集合赋值给一个变量。直接写SQL语句就可以完成,不需要中间变量。
不是不好用,而是基本语法还没理解

论坛徽章:
0
5 [报告]
发表于 2002-01-19 08:53 |只看该作者
是啊。
那有基本语法书啊。
SQL SERVER的语法怎么怪怪的.

论坛徽章:
0
6 [报告]
发表于 2002-01-19 15:22 |只看该作者
有一个计划表和一个资金拨付表:
一个计划表中有多次拨付;
计划表中有一个计划金额字段和计划余额字段;

资金拨付表中有一个拨付金额字段。

每次拨付后计划余额=计划金额-拨付金额

计划金额改变后,计划余额做相应改变。

论坛徽章:
0
7 [报告]
发表于 2002-01-19 15:23 |只看该作者
create table dbo.project_plan (
projectcode          char(12)             not null,
plancode             char(              not null,
plandate             datetime             null,
filecode             varchar(50)          null,
planmoney            numeric(12,2)        null,
planbalance          numeric(12,2)        null,
OperName             char(              null,
CheckFlag            char(1)              null,
)

create table dbo.payout (
plancode             char(              not null,
payoutcode           char(4)              not null,
payoutdate           datetime             null,
payoutmoney          numeric(12,2)        null,
fundsourcecode       char(2)              null,
OperName             char(              null,
constraint PK_PAYOUT primary key clustered (plancode, payoutcode)
)

论坛徽章:
0
8 [报告]
发表于 2002-01-19 17:01 |只看该作者

老兄不是sqlserver不好用,语法拐怪的,而是您还不熟练

不管哪一种数据库都不能这样用啊!



参见你上一回发贴的回答
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP