SQL觸發器 inset自學經驗

本人創建了一個特價匯網站,想要記錄每一個商品的點擊量和整個網站的訪問量,因而就想用sql 觸發器來實現sql

 drop trigger tgr_cg_records_update_column
 create trigger tgr_cg_records_update_column
on cg_records
    instead of  insert --插入觸發
as
    --定義變量
    declare @gid int, @record varchar(20), @has int;
    --在inserted表中查詢已經插入記錄信息
    select @gid = gid, @record=record from inserted;
    select  @record=record from cg_records where gid=@gid;--查找表中此商品的記錄
    set @record = @record + 1;
     print @gid;
    select @has=count(*) from cg_records where gid=@gid --查找是否有此條記錄
    print @has;
    if(@has=0)--若是沒有就插入一條,且初始化其點擊量爲1
    insert into cg_records(gid,record) values(@gid, @record);
     if(@has>=0)--若是有記錄就將此條記錄的點擊量加一保存
     update cg_records set record =@record where gid= @gid;測試

 

測試:
      insert into cg_records (gid,record)values(7,0);
      select * from cg_records網站

結果:測試成功,投入使用spa

 

心得:以前想用update觸發器,問題有二;get

一是不能獲取到deleted臨時表中的gid,變量

二是若是有新的記錄要插入的時候不能經過此觸發器來完成,須要另外插入一條記錄到表中date

因此想到用insert 加instead of ,優勢有二;select

一是當沒有記錄的時候就能夠插入一條新的記錄,查詢

二是有記錄的時候能夠更新記錄。mail

最後推廣下個人網站 特價匯 謝謝各位!

相關文章
相關標籤/搜索