蝸ゼ牜ご赽跑 的Blog
BlogJava
首頁
新隨筆
聯系
聚合
管理
隨筆分類
Design Patterns(22)
(rss)
Eclipse(2)
(rss)
Hibernate(3)
(rss)
J2ee(2)
(rss)
Java(4)
(rss)
Javascript(3)
(rss)
Linux(2)
(rss)
Maven(1)
(rss)
Oracle(2)
(rss)
SiteMesh(1)
(rss)
Spring(3)
(rss)
Struts2(5)
(rss)
Tomcat(2)
(rss)
XML(2)
(rss)
不得不轉(1)
(rss)
想說的話(3)
(rss)
隨筆檔案
2008年9月 (1)
2008年8月 (1)
2008年4月 (1)
2008年3月 (6)
2008年2月 (4)
2008年1月 (2)
2007年12月 (12)
2007年11月 (13)
2007年4月 (6)
2006年12月 (8)
最新隨筆
1.?oracle 行級觸發器
2.?使用hibernate對oracle數據庫中數據分頁出現重復記錄
3.?Java正則表達式學習(轉載)
4.?何時才能天下無賊?
5.?記錄一道過濾int數組中相同數據并按從小到大的排序的試題
6.?我現在才發現我那天遇到的兩道面試題不但不變態而且還很有意義
7.?使用SiteMesh裝飾頁面
8.?使用Maven2構建項目
9.?Hibernate構架應用中常用保存方式區別(轉載)
10.?Struts2攔截器學習
最新評論
1.?re: Struts2+spring2+hibernate3整合方案[未登錄]
能不能給我個原碼啊!菜鳥學習中跪求619562440@qq.com 謝謝
--張
2.?re: 分享一個spring+hibernate的通用分頁類
里面userPage是什么
--暗夜百家
3.?re: Struts2+spring2+hibernate3整合方案
能不能給我發一份源碼,跪求764263599@qq.com 謝謝
--李浩宇
4.?re: 設計模式學習筆記(二十一)—Composite模式
謝謝樓主的文章
--向日葵大俠
5.?re: 使用hibernate對oracle數據庫中數據分頁出現重復記錄
學習了!
--游客
oracle 行級觸發器
Posted on 2008-09-18 12:23
flustar
閱讀(965)
評論(0)
編輯
收藏
所屬分類:
Oracle
由于項目中業務比較復雜,在代碼中實現不太容易,于是就寫了一個觸發器來完成,第一次寫觸發器,對oracle的pl/sql 語法感覺不是太習慣,特在此記錄一下,以便以后再寫的時候,有個參考。
create
or
replace
trigger
audit_sync_trigger after
update
or
delete
on
tbl_video_programme
REFERENCING OLD
AS
old NEW
AS
new
for
each row
declare
is_audit_new
number
;
/**/
/*
新的審核值
*/
is_audit_old
number
;
category_id_new
number
;
/**/
/*
新的分類值
*/
category_id_old
number
;
keyword_id_new
number
;
/**/
/*
新的關鍵字值
*/
keyword_id_old
number
;
is_deleted_new
number
;
/**/
/*
新的是否刪除,假刪除的值
*/
is_deleted_old
number
;
begin
dbms_output.put_line(
'
test!!!!
'
);
/**/
/*
當執行插入操作時
*/
if
inserting
then
keyword_id_new:
=
:new.keyword_id;
category_id_new:
=
:new.category_id;
if
keyword_id_new
>
0
then
update
tbl_keyword k
set
k.NOT_AUDIT_NUM
=
k.NOT_AUDIT_NUM
+
1
where
k.KEYWORD_ID
=
keyword_id_new;
end
if
;
if
category_id_new
>
0
then
update
tbl_programme_category pc
set
pc.NOT_AUDIT_NUM
=
pc.NOT_AUDIT_NUM
+
1
where
pc.PROGRAMME_CATEGORY_ID
=
category_id_new;
--
INSERT INTO TEST VALUES('一條記錄被插入了!');
end
if
;
end
if
;
/**/
/*
當執行更新操作時,主要就是審核和假刪除
*/
if
updating
then
is_audit_new:
=
:new.is_audit;
is_audit_old:
=
:old.is_audit;
category_id_new:
=
:new.category_id;
category_id_old:
=
:old.category_id;
keyword_id_new:
=
:new.keyword_id;
keyword_id_old:
=
:old.keyword_id;
is_deleted_new:
=
:new.is_deleted;
is_deleted_old:
=
:old.is_deleted;
/**/
/*
如果這個節目已經匹配上關鍵字
*/
if
category_id_old
>
0
then
/**/
/*
如果一個節目被假刪除
*/
if
is_deleted_new
>
is_deleted_old
then
if
is_audit_old
=
1
then
update
tbl_programme_category pc
set
pc.TOTAL_NUM
=
pc.TOTAL_NUM
-
1
where
pc.PROGRAMME_CATEGORY_ID
=
category_id_old;
INSERT
INTO
TEST
VALUES
(is_deleted_new);
INSERT
INTO
TEST
VALUES
(is_deleted_old);
if
keyword_id_old
>
0
then
update
tbl_keyword k
set
k.AUDIT_FINISH_NUM
=
k.AUDIT_FINISH_NUM
-
1
where
k.KEYWORD_ID
=
keyword_id_old;
end
if
;
else
update
tbl_programme_category pc
set
pc.NOT_AUDIT_NUM
=
pc.NOT_AUDIT_NUM
-
1
where
pc.PROGRAMME_CATEGORY_ID
=
category_id_old;
if
keyword_id_old
>
0
then
update
tbl_keyword k
set
k.NOT_AUDIT_NUM
=
k.NOT_AUDIT_NUM
-
1
where
k.KEYWORD_ID
=
keyword_id_old;
end
if
;
end
if
;
end
if
;
end
if
;
/**/
/*
審核一個節目,原來已經匹配上關鍵字,有分類
*/
if
category_id_old
>
0
then
--
INSERT INTO TEST VALUES('該關鍵字原來有分類!');
/**/
/*
如果該節目以前未審核
*/
if
is_audit_new
>
is_audit_old
then
--
INSERT INTO TEST VALUES('審核一個節目由未審核到已審核');
/**/
/*
如果修改了分類
*/
if
category_id_new
!=
category_id_old
then
INSERT
INTO
TEST
VALUES
(
'
修改了分類!
'
);
/**/
/*
原來分類數-1
*/
update
tbl_programme_category pc
set
pc.NOT_AUDIT_NUM
=
pc.NOT_AUDIT_NUM
-
1
where
pc.PROGRAMME_CATEGORY_ID
=
category_id_old;
/**/
/*
新的分類數+1
*/
update
tbl_programme_category pc
set
pc.TOTAL_NUM
=
pc.TOTAL_NUM
+
1
where
pc.PROGRAMME_CATEGORY_ID
=
category_id_new;
/**/
/*
如果同時修改了關鍵字
*/
if
keyword_id_old
!=
keyword_id_new
then
/**/
/*
原來關鍵字數-1
*/
if
keyword_id_old
>
0
then
update
tbl_keyword k
set
k.NOT_AUDIT_NUM
=
k.NOT_AUDIT_NUM
-
1
where
k.KEYWORD_ID
=
keyword_id_old;
end
if
;
/**/
/*
新修改關鍵字數+1
*/
if
keyword_id_new
>
0
then
update
tbl_keyword k
set
k.AUDIT_FINISH_NUM
=
k.AUDIT_FINISH_NUM
+
1
where
k.KEYWORD_ID
=
keyword_id_new;
end
if
;
end
if
;
else
/**/
/*
未審核分類不變
*/
update
tbl_programme_category pc
set
pc.NOT_AUDIT_NUM
=
pc.NOT_AUDIT_NUM
-
1
where
pc.PROGRAMME_CATEGORY_ID
=
category_id_old;
update
tbl_programme_category pc
set
pc.TOTAL_NUM
=
pc.TOTAL_NUM
+
1
where
pc.PROGRAMME_CATEGORY_ID
=
category_id_old;
/**/
/*
如果只修改了關鍵字
*/
if
keyword_id_old
!=
keyword_id_new
then
/**/
/*
原來關鍵字數-1
*/
if
keyword_id_old
>
0
then
update
tbl_keyword k
set
k.NOT_AUDIT_NUM
=
k.NOT_AUDIT_NUM
-
1
where
k.KEYWORD_ID
=
keyword_id_old;
end
if
;
/**/
/*
新修改關鍵字數+1
*/
if
keyword_id_new
>
0
then
update
tbl_keyword k
set
k.AUDIT_FINISH_NUM
=
k.AUDIT_FINISH_NUM
+
1
where
k.KEYWORD_ID
=
keyword_id_new;
end
if
;
else
/**/
/*
如果關鍵字沒被修改
*/
update
tbl_keyword k
set
k.NOT_AUDIT_NUM
=
k.NOT_AUDIT_NUM
-
1
where
k.KEYWORD_ID
=
keyword_id_old;
update
tbl_keyword k
set
k.AUDIT_FINISH_NUM
=
k.AUDIT_FINISH_NUM
+
1
where
k.KEYWORD_ID
=
keyword_id_old;
end
if
;
end
if
;
else
/**/
/*
如果該節目以前審核了
*/
/**/
/*
如果修改了分類
*/
if
category_id_new
!=
category_id_old
then
/**/
/*
原來分類數-1
*/
update
tbl_programme_category pc
set
pc.TOTAL_NUM
=
pc.TOTAL_NUM
-
1
where
pc.PROGRAMME_CATEGORY_ID
=
category_id_old;
/**/
/*
新的分類數+1
*/
update
tbl_programme_category pc
set
pc.TOTAL_NUM
=
pc.TOTAL_NUM
+
1
where
pc.PROGRAMME_CATEGORY_ID
=
category_id_new;
/**/
/*
如果也修改了關鍵字
*/
if
keyword_id_old
!=
keyword_id_new
then
/**/
/*
原來關鍵字數-1
*/
if
keyword_id_old
>
0
then
update
tbl_keyword k
set
k.AUDIT_FINISH_NUM
=
k.AUDIT_FINISH_NUM
-
1
where
k.KEYWORD_ID
=
keyword_id_old;
end
if
;
/**/
/*
新修改關鍵字數+1
*/
if
keyword_id_new
>
0
then
update
tbl_keyword k
set
k.AUDIT_FINISH_NUM
=
k.AUDIT_FINISH_NUM
+
1
where
k.KEYWORD_ID
=
keyword_id_new;
end
if
;
end
if
;
else
/**/
/*
如果只修改了關鍵字
*/
if
keyword_id_old
!=
keyword_id_new
then
/**/
/*
原來關鍵字數-1
*/
if
keyword_id_old
>
0
then
update
tbl_keyword k
set
k.AUDIT_FINISH_NUM
=
k.AUDIT_FINISH_NUM
-
1
where
k.KEYWORD_ID
=
keyword_id_old;
end
if
;
/**/
/*
新修改關鍵字數+1
*/
if
keyword_id_new
>
0
then
update
tbl_keyword k
set
k.AUDIT_FINISH_NUM
=
k.AUDIT_FINISH_NUM
+
1
where
k.KEYWORD_ID
=
keyword_id_new;
end
if
;
end
if
;
end
if
;
end
if
;
else
/**/
/*
審核一個節目,該節目沒有分類,該節目肯定是未審
*/
update
tbl_programme_category pc
set
pc.TOTAL_NUM
=
pc.TOTAL_NUM
+
1
where
pc.PROGRAMME_CATEGORY_ID
=
category_id_new;
if
keyword_id_new
>
0
then
/**/
/*
如果審核的時候指定了關鍵字
*/
update
tbl_keyword k
set
k.AUDIT_FINISH_NUM
=
k.AUDIT_FINISH_NUM
+
1
where
k.KEYWORD_ID
=
keyword_id_new;
end
if
;
end
if
;
--
INSERT INTO TEST VALUES('一條記錄被更新了!');
dbms_output.put_line(
'
一條記錄被更新了!
'
);
end
if
;
/**/
/*
當執行真刪除操作時
*/
if
deleting
then
is_audit_old:
=
:old.is_audit;
category_id_old:
=
:old.category_id;
keyword_id_old:
=
:old.keyword_id;
/**/
/*
如果刪除的節目是已審核的
*/
if
is_audit_old
=
1
then
if
category_id_old
>
0
then
update
tbl_programme_category pc
set
pc.TOTAL_NUM
=
pc.TOTAL_NUM
-
1
where
pc.PROGRAMME_CATEGORY_ID
=
category_id_old;
end
if
;
if
keyword_id_old
>
0
then
/**/
/*
如果該節目匹配上了關鍵字
*/
update
tbl_keyword k
set
k.AUDIT_FINISH_NUM
=
k.AUDIT_FINISH_NUM
-
1
where
k.KEYWORD_ID
=
keyword_id_old;
end
if
;
else
if
category_id_old
>
0
then
update
tbl_programme_category pc
set
pc.NOT_AUDIT_NUM
=
pc.NOT_AUDIT_NUM
-
1
where
pc.PROGRAMME_CATEGORY_ID
=
category_id_old;
end
if
;
if
keyword_id_old
>
0
then
/**/
/*
如果該節目匹配上了關鍵字
*/
update
tbl_keyword k
set
k.NOT_AUDIT_NUM
=
k.NOT_AUDIT_NUM
-
1
where
k.KEYWORD_ID
=
keyword_id_old;
end
if
;
end
if
;
dbms_output.put_line(
'
一條記錄被刪除了!
'
);
--
INSERT INTO TEST VALUES('一條記錄被刪除了!');
end
if
;
end
;
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
oracle 行級觸發器
使用hibernate對oracle數據庫中數據分頁出現重復記錄
公告
本blog文章大都是作者學習之余所做,加上本人資歷尚淺,對某些問題的理解可能存在疏漏之處,望高手們多多批評指正,同時也希望在此,多結交一些朋友。
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
參考鏈接
IBM developerWorks
JavaEye
JavaWorld
Java開源大全
Java文檔大全
Java程序員精粹
Linux伊甸園
SVN中文站
UML軟件工程組織
中國JAVA實驗室
牛人的blog
評論排行榜
1.?Struts2+spring2+hibernate3整合方案(44)
2.?使用TOMCAT5.5連接池連接mysql(解決Cannot create JDBC driver of class '' for connect URL 'null')(28)
3.?我現在才發現我那天遇到的兩道面試題不但不變態而且還很有意義(24)
4.?Struts2中使用Common-FileUpload實現文件上傳(9)
5.?分享一個spring+hibernate的通用分頁類(6)
閱讀排行榜
1.?使用TOMCAT5.5連接池連接mysql(解決Cannot create JDBC driver of class '' for connect URL 'null')(51593)
2.?Struts2+spring2+hibernate3整合方案(33797)
3.?Struts2中使用Common-FileUpload實現文件上傳(9662)
4.?Struts2中有關struts-default.xml,struts.xml,struts.properties文件詳解(7037)
5.?Struts2中Action詳解(5978)
posts - 146, comments - 143, trackbacks - 0, articles - 0
Copyright © flustar
主站蜘蛛池模板:
亚洲黄色在线网站
|
亚洲精品美女久久久久久久
|
亚洲乱码无人区卡1卡2卡3
|
九九久久精品国产免费看小说
|
免费精品国偷自产在线在线
|
亚洲第一区精品日韩在线播放
|
内射干少妇亚洲69XXX
|
精品亚洲福利一区二区
|
特级无码毛片免费视频尤物
|
国产免费69成人精品视频
|
激情内射亚洲一区二区三区
|
免费看黄网站在线看
|
中文字幕亚洲专区
|
99热亚洲色精品国产88
|
a级毛片免费全部播放
|
国产成人啪精品视频免费网
|
精品日韩亚洲AV无码
|
国产免费A∨在线播放
|
成人黄18免费视频
|
亚洲图片一区二区
|
一边摸一边爽一边叫床免费视频
|
99在线视频免费观看视频
|
国产亚洲无线码一区二区
|
久久性生大片免费观看性
|
日韩毛片免费在线观看
|
亚洲精品456在线播放
|
精品人妻系列无码人妻免费视频
|
爽爽日本在线视频免费
|
亚洲精品不卡视频
|
成人性生交大片免费看好
|
国产公开免费人成视频
|
亚洲中文字幕久在线
|
一级毛片成人免费看免费不卡
|
亚洲五月午夜免费在线视频
|
亚洲乱色熟女一区二区三区蜜臀
|
最近免费2019中文字幕大全
|
亚洲中文久久精品无码
|
特级毛片在线大全免费播放
|
国产精品免费看久久久无码
|
亚洲日本人成中文字幕
|
91视频免费网址
|