设为首页 加入收藏

TOP

机房收费系统合作――再看数据库设计(二)
2015-11-21 01:34:14 来源: 作者: 【 】 浏览:1
Tags:机房 收费系统 合作 数据库 设计
ow New Exception("当前条件下没有记录!") Return Nothing End If End Function #End Region

?

二、触发器帮你结账:

结账的时候需要在三张表上边更新IScheck字段的数据,既然设计到三张表,就写了触发器。Insert数据的时候,就触发它的执行。建议大家:触发器要慎用,因为太灵活了,一旦满足Insert,update,delete这个触发条件,它就会执行。相比执行倾向于存储过程的使用,但是灵活也是它的优点,各有千秋吧。

?

USE [HezuoCharge]
GO
/****** Object:  Trigger [dbo].[Check]    Script Date: 05/27/2015 21:57:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		周洲
-- Create date: 2015-5-5
-- Description:	结账的时候,都要写上已结账
-- =============================================
ALTER TRIGGER [dbo].[Check]  
  on [dbo].[T_Check]  
  for Insert  
 AS  
  BEGIN  
    update T_Card set IsCheck ='已结账' where Carddate =CONVERT (varchar(10),getdate(),120)
	update T_Recharge set IsCheck ='已结账' where Rechargedate =CONVERT (varchar(10),getdate(),120)
	update T_Cancelcard set IsCheck ='已结账' where Canceldate =CONVERT (varchar(10),getdate(),120)
	
  END


?

三、巧用函数,帮你算账

SQLSERVER提供好多函数,可以帮我们轻轻松松解决排序,最大值,最小值,平均值,求和等等一些事情。下面是我写的算总金额的语句。

?

select table1.remaincash + table2.alladdmoney -table3.allcancelcash from 
(select top 1 convert(int,Allcash)remaincash from T_Check Order By CheckID desc)table1, 
(select sum(convert(int,Addmoney  )) alladdmoney from V_TodayRecharge )table2,
(select sum(convert(int,Cancelcash  )) allcancelcash from V_TodayCancel)table3


?

四、当日结账,用视图列出数据

以充值表数据列出为例:

?

SELECT     CardID, Addmoney, Rechargedate, Rechargetime, UserID
FROM         dbo.T_Recharge
WHERE     (Rechargedate = CONVERT(varchar(10), GETDATE(), 120))


?

五、小结:

本想用重构时候的数据库,后来看到一篇新浪微博,是.NET程序员面试的一组SQL试题,简直看傻我眼!!!才发现,我们做的是多么小儿科的东西。。才费尽心思的在数据库上面创新的。总之,不要因为事情简单就不去做!就像导数据一样,以为是体力活,但是真的可以学到很多东西的,要看你站在什么样的高度上去审视这件事情!不仅仅是Excel表的技术体现,当初我的理解是错的。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇B+树索引 下一篇客户管理系统之数据库设计

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: