| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 883 人关注过本帖
标题:[求助]这个触发器该怎么做啊 ???
只看楼主 加入收藏
czw123
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-6-9
收藏
 问题点数:0 回复次数:8 
[求助]这个触发器该怎么做啊 ???
一个简单的图书管理系统,包括如下四个表:
读者种类信息(种类编号,种类名称,借书数量,借书期限,有效期限)
读者信息(读者编号,读者姓名,种类编号,性别,工作单位,电话号码,办证日期)
书籍信息(书籍编号,书籍名称,类别编号,作者姓名,出版社,价格,登记日期)
借阅信息(借阅编号,读者编号,书籍编号,借书日期,还书日期,罚款金额)
请问一下,这样建立一个触发器,当读者还书时,能根据读者类别判断他是否超过借书期限,超过则罚款,一天3毛钱,并自动将罚款金额进行计算,填入对应属性里.
各位大虾帮个忙了,小弟感激不尽哦
搜索更多相关主题的帖子: 触发器 种类 类别 期限 书籍 
2006-06-14 17:07
czw123
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-6-9
收藏
得分:0 
怎么没人回答啊
2006-06-14 17:19
小笨笨
Rank: 5Rank: 5
等 级:贵宾
威 望:19
帖 子:1169
专家分:0
注 册:2006-4-17
收藏
得分:0 

测试成功的:

CREATE TRIGGER [还书] ON [dbo].[借阅信息]
FOR UPDATE
AS
if (select DATEDIFF(day, 借书日期, 还书日期) from inserted)>30
begin
Update 借阅信息 set 罚款金额=0.3*((select DATEDIFF(day, 借书日期, 还书日期) from inserted)-30) where 借阅编号=(select 借阅编号 from inserted)
end


欢迎光临我的博客: http://smallfools.blog./default.html
2006-06-15 13:02
czw123
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-6-9
收藏
得分:0 

谢谢了哦

2006-06-15 18:07
water123456
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:3208
专家分:5
注 册:2006-2-21
收藏
得分:0 
等级:版主
威望:9
文章:993
积分:23158
注册:2006年4月17日
3
QQ

测试成功的:

CREATE TRIGGER [还书] ON [dbo].[借阅信息]
FOR UPDATE
AS
if (select DATEDIFF(day, 借书日期, 还书日期) from inserted)>30
begin
Update 借阅信息 set 罚款金额=0.3*((select DATEDIFF(day, 借书日期, 还书日期) from inserted)-30) where 借阅编号=(select 借阅编号 from inserted)
end

-----------------------------------------------------------------------------------------------
强,精髓,我还想问一个问题,DATEDIFF你的第一个参数,一定是day吗?可是year,和month吗?
不好意思我的SQL学习的很差.

让我们风风火火的过一生,别平平淡淡过一年。
2006-06-15 20:48
小笨笨
Rank: 5Rank: 5
等 级:贵宾
威 望:19
帖 子:1169
专家分:0
注 册:2006-4-17
收藏
得分:0 

都可以啊。你试试就知道了。

其实上面那个题出得不错,有点难度,又很实用。


欢迎光临我的博客: http://smallfools.blog./default.html
2006-06-16 12:38
史前大暴龙
Rank: 1
等 级:新手上路
帖 子:375
专家分:0
注 册:2005-11-22
收藏
得分:0 
请解释一下这个句子是什么意思啊:if (select DATEDIFF(day, 借书日期, 还书日期) from inserted)>30
谢谢了

我不是最好,但我可以更好,大家一起加油了
2006-06-20 22:23
史前大暴龙
Rank: 1
等 级:新手上路
帖 子:375
专家分:0
注 册:2005-11-22
收藏
得分:0 

我知道了,刚上网去找了一下,也就顺便发来让大家看看,呵呵

DateDiff 函数 祥解

DateDiff 函数



描述

返回两个日期之间的时间间隔。

语法

DateDiff(interval, date1, date2 [,firstdayofweek][, firstweekofyear]])

DateDiff 函数的语法有以下参数:



参数 描述

interval 必选。字符串表达式,表示用于计算 date1 和 date2 之间的时间间隔。有关数值,请参阅“设置”部分。

date1, date2 必选。日期表达式。用于计算的两个日期。

firstdayofweek 可选。指定星期中第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。

firstweekofyear 可选。指定一年中第一周的常数。如果没有指定,则默认为 1 月 1 日所在的星期。有关数值,请参阅“设置”部分。





设置

interval 参数可以有以下值:

设置 描述

yyyy 年

q 季度

m 月

y 一年的日数

d 日

w 一周的日数

ww 周

h 小时

m 分钟

s 秒





firstdayofweek 参数可以有以下值:



常数 值 描述

vbUseSystem 0 使用区域语言支持 (NLS) API 设置。

vbSunday 1 星期日(默认)

vbMonday 2 星期一

vbTuesday 3 星期二

vbWednesday 4 星期三

vbThursday 5 星期四

vbFriday 6 星期五

vbSaturday 7 星期六





firstweekofyear 参数可以有以下值:



常数 值 描述

vbUseSystem 0 使用区域语言支持 (NLS) API 设置。

vbFirstJan1 1 由 1 月 1 日所在的星期开始(默认)。

vbFirstFourDays 2 由在新年中至少有四天的第一周开始。

vbFirstFullWeek 3 由在新的一年中第一个完整的周开始。





说明

DateDiff 函数用于判断在两个日期之间存在的指定时间间隔的数目。例如可以使用 DateDiff 计算两个日期相差的天数,或者当天到当年最后一天之间的星期数。

要计算 date1 和 date2 相差的天数,可以使用“一年的日数”(“y”)或“日”(“d”)。当 interval 为“一周的日数”(“w”)时,DateDiff 返回两个日期之间的星期数。如果 date1 是星期一,则 DateDiff 计算到 date2 之前星期一的数目。此结果包含 date2 而不包含 date1。如果 interval 是“周”(“ww”),则 DateDiff 函数返回日历表中两个日期之间的星期数。函数计算 date1 和 date2 之间星期日的数目。如果 date2 是星期日,DateDiff 将计算 date2,但即使 date1 是星期日,也不会计算 date1。



如果 date1 晚于 date2,则 DateDiff 函数返回负数。



firstdayofweek 参数会对使用“w”和“ww”间隔符号的计算产生影响。



如果 date1 或 date2 是日期文字,则指定的年度会成为日期的固定部分。但是如果 date1 或 date2 被包括在引号 (" ") 中并且省略年份,则在代码中每次计算 date1 或 date2 表达式时,将插入当前年份。这样就可以编写适用于不同年份的程序代码。



在 interval 为“年”(“yyyy”)时,比较 12 月 31 日和来年的 1 月 1 日,虽然实际上只相差一天,DateDiff 返回 1 表示相差一个年份。


我不是最好,但我可以更好,大家一起加油了
2006-06-20 22:40
wc_accp
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-5-25
收藏
得分:0 

好象很早以前 就做过啊


不要竭尽全力去和你的同僚竞争。你更应该在乎的是:你要比现在的你更强。"你应该永远给自己设立一些很具挑战性、但并非不可及的目标。
2006-06-20 23:33
快速回复:[求助]这个触发器该怎么做啊 ???
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.061687 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved