请帮写一个触发器

kamson_cn 2009-04-23 09:26:09
需要写触发器,可是原来没写过,又比较急用。请大家帮写一个,其他的我照着写就OK了。

现在有一个销售记录表tb_sales列如下:
sellid(销售单号),date(销售时间),flow(消费人数),price(消费金额),sellcashier(收银员),sellpos(POS机)

现在我需要做一个日报表tb_rpDay 列入下:
sellpos(POS机),sellcashier(收银员),date(销售时间),price(消费金额)

其中tb_sales表中记录的date格式为2009-4-22 21:21:04 ,我需要实现的是当表tb_sales每插入一条记录的时候
比较报表tb_rpDay的pos机,收银员列以及销售时间列。如果存在,则更新消费额金额price=price+price。不存在,则新建一条记录。

比如:tb_sales新插入一条数据,POS机:P001,收银员:小王,销售时间:2009-4-22 21:21:04,消费额:24.00
那么触发器需要完成的任务是:比较tb_rpDay表。如果存在POS机:P001,收银员:小王,销售时间:2009-4-22这个组合的记录,则累加上消费金额。
如不存在,则新建该条记录。
...全文
99 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
-狙击手- 2009-04-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kamson_cn 的回复:]
列名"price"无效。。。。啥意思呃
[/Quote]

你的这两个表没有price列吗?
sdhdy 2009-04-26
  • 打赏
  • 举报
回复
--试试吧,应该没问题。
create trigger trig_insert_tb_sales  on tb_sales
for insert as
if exists(select 1 from inserted a,tb_rpDay b where a.sellpos=b.sellpos and a.sellcashier=b.sellcashier and datediff(dd,a.[date],b.[date])=0)
update a set price=isnull(a.price,0)+isnull(b.price,0) from tb_rpDay a,inserted b where a.sellpos=b.sellpos and a.sellcashier=b.sellcashier and datediff(dd,a.[date],b.[date])=0
else
insert tb_rpDay(sellpos,sellcashier,[date],price) select sellpos,sellcashier,[date],price from inserted
happy664618843 2009-04-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kamson_cn 的回复:]
列名"price"无效。。。。啥意思呃
[/Quote]

顶顶啊!
kamson_cn 2009-04-23
  • 打赏
  • 举报
回复
列名"price"无效。。。。啥意思呃
Yang_ 2009-04-23
  • 打赏
  • 举报
回复
create trogger tr_tb_sales
on tb_sales
for insert,delete,update
as

select sellpos,sellcashier,[date]
,sum(price) as price
into #temp
from (
select sellpos,sellcashier,cast(convert(varchar(10,[date],120) as datetime) as [date]
,price
from inserted
union all
select sellpos,sellcashier,cast(convert(varchar(10,[date],120) as datetime) as [date]
,-price
from deleted
) as t

update r set
price = isnull(r.price,0) + isnull(t.price,0)
from tb_rpDay r,#temp t
where r.sellpos= t.sellpos
and r.sellcashier= t.sellcashier
and r.[date]=t.[date]

insert tb_rpDay (sellpos,sellcashier,[date]
,price
)
select sellpos,sellcashier,[date]
,price
from #temp t
where not exists (
select 1
from tb_rpDay r
where r.sellpos= t.sellpos
and r.sellcashier= t.sellcashier
and r.[date]=t.[date]
)
go

jingmaomao 2009-04-23
  • 打赏
  • 举报
回复
if object_id('tr_tbsales')is not null
drop trigger tr_tbsales
go
create trigger tr_tbsales
on tb_sales
after insert
as
declare @sellpos varchar(10),@sellcashier varchar(10),@date datetime,@price1 float
select @sellpos=sellpos, @sellcashier=sellcashier ,@date=date,@price1=price from inserted
if exists(select * from tb_rpday where sellpos=@sellpos and sellcashier=@sellcashier and date=@date)
update tb_rpday set price=tb_rpday.price+@price1 where sellpos=@sellpos and sellcashier=@sellcashier and date=@date
else
insert into tb_rpday(sellpos,sellcashier,date,price)values(@sellpos,@sellcashier,@date,@price1)

你参考一下,跟你的要求离得比较近了
中文版目录总汇及内容提要 第一章. 企业应用中的作业调度 内容提要:什么是作业调度,作业调度为什么说是重要的,企业应用中的作业调度,非企业应用中的作业调度,作业调度与工作流,关于作业调度其他可选择方案 第二章. Quartz 起步 内容提要:本章对 Quartz 框架一个快速的入门介绍,同时也大略指导你从哪里下载,构建和安装这个框架 第三章. Hello Quartz (第一部分) 内容提要:建立 Hello Quartz 工程,并创建一个 Quartz Job 类 ScanDirectoryJob. 第三章. Hello Quartz (第二部分) 内容提要:创建一个 Quartz Scheduler,关联上一个 Quartz Trigger 以编程方式调度前面编的 ScanDirectoryJob 运行。 第三章. Hello Quartz (第三部分) 内容提要:通过配置 quartz.properties、quartz_jobs.xml 以声明的方式调度 ScanDirectoryJob 运行。 第三章. Hello Quartz (第四部分) 内容提要:让我们最后简单讨论打包一个用到了 Quarts 框架的应用程序的流程,需要依赖于哪些包,也以此来结束本章的内容。 第四章. 部署 Job (第一部分) 内容提要:介绍 Scheduler 和 SchedulerFactory 有哪些类型、SchedulerFactory 的关键 API 方法;以及如何通过 java.util.Properties 实例或默认 quartz.properties 文件创建 Scheduler。 第四章. 部署 Job (第二部分) 内容提要:如何管理 Scheduler(启动、停止、Standby 模式)。还介绍了 Job、JobExecutionContext、JobDetail、JobDataMap,及如何访问 JobDataMap 中的数据。有状态和无状态的 Job。 第四章. 部署 Job (第三部分) 内容提要:Job 的易失性、持久性和可恢复性,如何从 Scheduler 中移除、中断 Job。Quartz 已为我们提供了哪些 Job。最后是 Java 线程的简单介绍。 第四章. 部署 Job (第四部分) 内容提要:线程在 Quartz 中的用法,主处理线程:QuartzSchedulerThread 和 Quartz 工作者线程。Quartz Trigger 和 Calendar 各有哪些类型和如何使用。 第五章. Cron 触发器及相关内容 (第一部分) 内容提要:引入 Quartz CronTrigger 及简单使用 CronTrigger 来部署一个 Job 第五章. Cron 触发器及相关内容 (第二部分) 内容提要:详细介绍了 cron 表达式的格式和像 , - * ? / L W C # 特殊符号的使用 第五章. Cron 触发器及相关内容 (第三部分) 内容提要:CronTrigger 使用起(startTime) 迄(endTime) 日期的使用。TriggerUtils 简单方便的创建 Trigger。应用 JobInitializationPlugin 在 quartz_jobs.xml 配置文件中 Cron 表达式。 第五章. Cron 触发器及相关内容 (第四部分) 内容提要:Cron 表达式 Cookbook,列举了各种 Cron 表达式的法和意义,有助于更好的理解 Cron 表达式;还用了 TriggerUtils 创建了一个即刻触发的 Trigger。 第六章. Job 存储和持久化 (第一部分) 内容提要:介绍 Quartz 中的 Job 存储,JobStore 接口相关 API 方法。使用 RAMJobStore 来实现 Job 存储及它的优缺点。 第六章. Job 存储和持久化 (第二部分) 内容提要:使用持久性的 JobStore,可用类型 JobStoreTX 和 JobStoreCMT。持久性 JobStore 是通过数据库来完成的,哪可支持哪些数据及需要创建些什么表。 第六章. Job 存储和持久化 (第三部分) 内容提要:使用和配置 JobStoreTX,需要为不同数据库平台指定不同的驱动代理( DriverDelegate),和 quartz.properties 中与 JobStoreTX 相关配置说明。 第六章. Job 存储和持久化 (第四部分) 内容提要:为 JobStoreTX 通过在 quartz.properties 配置来创建数据源,并在 Scheduler 中使用数据源 第六章. Job 存储和持久化 (第五部分

34,590

社区成员

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

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