1樓:匿名使用者
我寫的那個觸發器問題太多所以刪了(汗。。)
其實樓下兩位兄弟說的很對,你把表合一張表
id 原始值 修改值 總積分 狀態 時間
原始值就不說了
修改值就是你每次操作時要扣除或增加的積分
總積分就是修改值和原始值的+ -值
時間就是你操作這條資料的系統時間
狀態(1或0):確定操作是增加積分還是扣除積分
當要增加一個會員的積分時,操作順序如下
修改值=增加或扣除的積分
原始值=原來的總積分
總積分=原始值加或減修改值
狀態=1
時間=系統時間
而這表也可以做到日誌表的作用
如果說的不對,請直接忽略
一下是我的測試資料:
--測試表
create table jfinfo
(id int,
ysz int, --原始值
xgz int, --修改值
zjf int, --總積分
zt bit, --狀態
rq datetime --操作時間)go
--觸發器
alter trigger update_trigger
on jfinfo
for update
as declare @zt bit
if update(xgz)
begin
set @zt=(select zt from inserted)
--如果有更新操作
if (((select count(*) from deleted)>0) and ((select count(*) from inserted)>0))
begin
if (@zt=1)--如果是增加
begin
update jfinfo set ysz=(select zjf from deleted),
zjf=(select zjf from deleted)+(select xgz from inserted),
rq=getdate()
endelse
begin
update jfinfo set ysz=(select zjf from deleted),
zjf=(select zjf from deleted)-(select xgz from inserted),
rq=getdate()
endend
endgo
--測試資料
insert into jfinfo values(1,10,0,10,1,getdate())
--測試結果
update jfinfo set xgz=1,zt=1 where id=1
select * from jfinfo
--親測有效,希望能幫到你
2樓:匿名使用者
其實沒有必要用兩張表,你要查詢的話直接
select sum(每次積分) from 表名 where 會員卡號=會員卡號
不就行了.
3樓:歸浦秋梵
這個沒必要用2張表,就是存明細資訊就可以了
具體要用到得時候再用聚合函式,比如
select sum(每次積分) from 表名 where 會員卡號=會員卡號
4樓:匿名使用者
你放總積分的那個表裡面的積分數值總是最後一次消費後的積分,所以每次消費只要加上當次消費的積分,再存回去就好了
update 表名 set [總積分]=[總積分]+當前消費積分 where [會員卡號]=當前會員卡號
5樓:九州樹
每次輸入時,如果提交成功,就改變兩個表,第一次更新當前表,第二次更新總積分表,即一次執行兩個簡單的函式而已,100分,太強大了。
vb程式設計如何實現資料中指定行的資料相加
dim j as string dim p as string dim h as long adodc1.recordsource select from tb where 主鍵 text1.text adodc1.refresh j adodc1.recordset.fields 數字 adodc...
兩張EXCEL表中的相同姓名下的資料相加到第3張表中怎麼做
滕樹萍 假如 sheet1表的a1是標題 姓名 a2 a4是姓名sheet2表的a1是標題 姓名 a2 a5是姓名在sheet3工作表中的a2單元格輸入公式 if and countif a 1 a1,sheet1 a 1 a 4 index sheet2 a 1 a 5,match 0,count...
ORACLE資料庫多行資料合併為1行的問題,急用
你看看是不是這樣的,你資料排版太混亂了 select csrq,qyph,pczl,wm concat jyxmmc wm concat jyz xydj,je from 表名 group by csrq,qyph,pczl,xydj,je 補充 oracle跟sqlserver不一樣,如果儲存過程...