SQL ORACLE 触发器(trigger)问题 求大神,写的好给追加
建立一个触发器,当每次一个物品(item)的bidAmount是两倍的reserveAmount时,将itemNumber,itemName和sellerusername...
建立一个触发器,当每次一个物品(item)的bidAmount是两倍的reserveAmount时,将itemNumber,itemName和sellerusername自动存储在一个单独的叫"Best 10 Auction List"的表中。(这个表只能存储最近的10个符合条件物品)
图片左边是表。具体问题在右边是英文的。能做出来再追加100。
在线等 展开
图片左边是表。具体问题在右边是英文的。能做出来再追加100。
在线等 展开
展开全部
表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"的表只存储最近的十个数据需要在这张表上建立一个触发器,可以就在这张表里增加一个数据插入的时间字段,这样就很明显的可以只保留最近的十笔数据,
这个方案可行的话我再改动
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询