SQL ORACLE 触发器(trigger)问题 求大神,写的好给追加

建立一个触发器,当每次一个物品(item)的bidAmount是两倍的reserveAmount时,将itemNumber,itemName和sellerusername... 建立一个触发器,当每次一个物品(item)的bidAmount是两倍的reserveAmount时,将itemNumber,itemName和sellerusername自动存储在一个单独的叫"Best 10 Auction List"的表中。(这个表只能存储最近的10个符合条件物品)
图片左边是表。具体问题在右边是英文的。能做出来再追加100。
在线等
展开
 我来答
doreen_33
2012-05-31 · TA获得超过957个赞
知道小有建树答主
回答量:392
采纳率:100%
帮助的人:144万
展开全部
表BID的触发器
CREATE trigger ins on Bid
for insert
as
declare @bidAmount int,
@reserveAmount int
set @bidAmount=(select bidAmount from inserted)
set @reserveAmount=(select distinct t1.reserveAmount from auction t1,inserted t2 where t1.auctionnum=t2.auctionnum)

if @bidAmount=2*@reserveAmount
begin

insert into Best_10_Auction_List
select t1.itemNumber,t1.itemName,t1.sellerusername
from item t1,
Bid t2,
auction t3
where t1.itemNumber=t3.itemNumber
and t2.auctionnum=t3.auctionnum

end
还有後面的"Best 10 Auction List"的表只存储最近的十个数据需要在这张表上建立一个触发器,可以就在这张表里增加一个数据插入的时间字段,这样就很明显的可以只保留最近的十笔数据,
这个方案可行的话我再改动
追问
看起来应该可以。那后面的存储最近十个还需要另一个触发器?
帮忙写完吧~然后回头我改一下可以运行再追加100。。。分是最没用的东西了,哈哈~
追答
先将前面的触发器中的插入部份换成
insert into Best_10_Auction_List
select t1.itemNumber,t1.itemName,t1.sellerusername,getdate()
from item t1,
Bid t2,
auction t3
where t1.itemNumber=t3.itemNumber
and t2.auctionnum=t3.auctionnum

再创建一个触发器删除多于十笔的内容
CREATE trigger ins on Best_10_Auction_List
after insert
as
declare @count int
set @count=(select count(*) from Best_10_Auction_List)

if @count>10
begin

select top 10 *
into #a
from Best_10_Auction_List
order by InsertTime desc

delete from Best_10_Auction_List

insert into Best_10_Auction_List
select *
from #a

end
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式