我最近在写一个图书馆借书系统,有一个表叫orders,里面存放读者预约的图书,有一个字段叫“order_time”是smalldatetime类型的,还有一个字段叫“order_out_time””也是smalldatetime类型的表示预约到期时间,现在是想这样,当插入记录时只插入order_time,而“order_out_time”不用管,因为预约到期时间就是在order_time”的基础上加上三天,所以我想让数据库实现,而不是编程,这是第一个问题。。
第二个问题,当SQL Server检测到order_out_time已经到了,也就是说该预约到期了,能够自动删除本条记录,同时修改"book"表中的“num”字段(int类型),让其自增一,表示该本书的可借阅量增加了一。想求助一下各位大神们,因为不太会数据库设计。如果实现加倍悬赏,说到做到!谢谢。
对了,orders表中有一个叫book_id的外键和book表(book_id)关联。
SQL Server时间触发器
答案:2 悬赏:0 手机版
解决时间 2021-02-22 15:07
- 提问者网友:练爱
- 2021-02-22 05:58
最佳答案
- 五星知识达人网友:时间的尘埃
- 2021-02-22 06:46
第一个问题按照楼上说的做
第二个问题就写个存储过程 然後 用排程,每天规定的时间执行这个存储过程就好了
2.create proc test
as
select book_id,count(*) as 数量 into #a from orders where convert(varchar(12), dateadd(day,3,order_time),111)=convert(varchar(12),getdate(),111) group by book_id
delete from orders where convert(varchar(12), dateadd(day,3,order_time),111)=convert(varchar(12),getdate(),111)
update t1
set t1.num=t1.num+t2.数量
from book t1, #a t2
where t1.book_id=t2.book_id
第二个问题就写个存储过程 然後 用排程,每天规定的时间执行这个存储过程就好了
2.create proc test
as
select book_id,count(*) as 数量 into #a from orders where convert(varchar(12), dateadd(day,3,order_time),111)=convert(varchar(12),getdate(),111) group by book_id
delete from orders where convert(varchar(12), dateadd(day,3,order_time),111)=convert(varchar(12),getdate(),111)
update t1
set t1.num=t1.num+t2.数量
from book t1, #a t2
where t1.book_id=t2.book_id
全部回答
- 1楼网友:青灯有味
- 2021-02-22 07:03
create trigger insertedata
on test01
for insert
as
begin
declare @id int
set @id=(select id from inserted)
insert into test02(id,列名2) values(@id,'值2')
end
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯