2013-05-26 34 views
0

我無法編寫sql語句來創建一個觸發器,該觸發器對將來由頂級客戶端進行的任何購買應用15%的折扣。只要該頂級客戶的新購買被插入到購買表中,它就會將購買量減少15%。那麼我會在插入新購買後添加觸發器嗎?我一直在閱讀一些指南/教程,但希望得到一些幫助/指導。感謝創建適用於rnk = 1的15%折扣的oracle觸發器

SELECT CLIENTNO, CNAME, SPA PURCHASE_AMOUNT 
FROM (SELECT CLIENT.CLIENTNO, CLIENT.CNAME, SUM(PURCHASE.AMOUNT) SPA, RANK() OVER (ORDER  BY SUM(PURCHASE.AMOUNT) DESC) RNK 
FROM PURCHASE JOIN CLIENT ON PURCHASE.CLIENTNO = CLIENT.CLIENTNO 
GROUP BY CLIENT.CLIENTNO, CLIENT.CNAME) 
WHERE RNK = 1; 
+1

您如何建議防止此觸發器在每次運行時重新應用折扣?所寫的select子句可以輕鬆找到同一個客戶端。 –

+0

這不適合用觸發器實現的任務。 –

回答

0

聽起來更好的解決方案可能是具有觸發填充/爲15%(或0.15或0.85)的值更新一個折扣表。銷售價格查詢程序在進行銷售時會考慮到這一點。 (這也可以簡化例如10%折扣日的過程。)