- 浏览: 502735 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (437)
- Windows设置 (2)
- oracle数据库 (39)
- bug--jsp (4)
- j2se (13)
- js (40)
- bug-tomcat不能启动程序 (1)
- Hibernate (29)
- eclipse (20)
- java (65)
- 设计模式 (6)
- bug (18)
- PL/SQL (11)
- 前台 (5)
- 杂谈 (25)
- UML (1)
- jdbc编程 (2)
- 技术调研 (1)
- 数据通信 (2)
- ios (1)
- servlet自学笔记 (10)
- tomcat (9)
- SQL学习笔记 (6)
- java工具 (1)
- 数据库设计 (4)
- javascript (10)
- jsp (11)
- struts (17)
- ajax (7)
- linix/Unix (6)
- 资源 (3)
- spring (14)
- 算法 (5)
- 计算机网络 (2)
- http (5)
- c++ (2)
- web应用 (3)
- jvm (5)
- java中的字符编码 (14)
- java代码库 (2)
- classloader (1)
- 读书笔记 (1)
- c (1)
- 开源软件 (1)
- svn (1)
- AOP (1)
- java序列化 (1)
- 多线程 (4)
- The legendary programmers (1)
- Apache http Server (1)
- html tag (3)
- struts1.X学习笔记 (5)
- buffalo (1)
- 自己收藏 (0)
- TOEFL(IBT) (1)
- 网络翻墙 (0)
- 编译原理 (1)
- 书籍推荐 (1)
- css (10)
- javaee环境搭建资料 (1)
- 开源工具 (1)
- 美国生活 (1)
- spring自学 (3)
- log4j (3)
- 算法与数据结构 (5)
- 病毒,插件处理大全 (1)
- flex (2)
- webservice (1)
- git (7)
- cs (1)
- html (4)
- javaee (6)
- 开车 (0)
- springmvc (3)
- 互联网架构 (2)
- intellij idea (18)
- maven (15)
- mongodb (2)
- nginx (1)
- react (3)
- java基础例子 (2)
- springboot (2)
- 培训 (5)
- mysql (3)
- 数据库 (3)
- 生活 (2)
- intellij (3)
- linux (2)
- os (3)
最新评论
-
潇洒天涯:
[color=blue][color=cyan] ...
oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 -
hekai1990:
受教了..
oracle中的varchar2
终于修改好了触发器,对于使用自治事务的行级触发器,需要判断正在修改的数据的比较,之前一直写错了,这回来个最终版本的,之前的错误是rownum引起的。
select * From (select rownum rn,表.* from 表) where rn = 2 rownum使用=号时需要使用别名
===============================================
CREATE OR REPLACE TRIGGER TB_PER_POSITONLEVEL_TRI
AFTER INSERT OR UPDATE OF c_effectivedate,c_postionlevel,c_postioncluster OR DELETE ON TB_PER_POSITONLEVEL
FOR EACH ROW
DECLARE
position_effdate DATE;
position_level varchar2(64);
position_order varchar2(64);
position_oid varchar2(128);
cou NUMBER(3);
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
--SELECT COUNT(*) INTO cou FROM (SELECT a.c_oid FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :NEW.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC);
--INSERT INTO A_TEMP VALUES(cou);
IF inserting THEN
SELECT COUNT(*) INTO cou FROM (SELECT a.c_oid FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :NEW.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC);
-- INSERT INTO A_TEMP VALUES('行级别触发器after');
--INSERT INTO A_TEMP VALUES(position_oid);
--INSERT INTO A_TEMP VALUES( to_char(position_effdate,'fmdd month yyyy') );
--INSERT INTO A_TEMP VALUES(position_level);
--INSERT INTO A_TEMP VALUES(position_order);
--INSERT INTO A_TEMP VALUES(cou);
--以前有记录,插入记录需要与以往记录的最大日期比较。
IF cou <> 0 THEN
SELECT CASE WHEN :new.c_oid = c_oid THEN :NEW.c_postionlevel ELSE c_postionlevel END INTO position_level FROM (SELECT a.c_oid, a.c_postionlevel FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :NEW.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE ROWNUM =1 ;
SELECT c_effectivedate INTO position_effdate FROM (SELECT a.c_oid,a.c_effectivedate FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :NEW.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE ROWNUM =1 ;
SELECT CASE WHEN :new.c_oid = c_oid THEN :new.c_postioncluster ELSE c_postioncluster END INTO position_order FROM (SELECT a.c_oid,a.c_postioncluster FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :NEW.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE ROWNUM =1 ;
SELECT c_oid INTO position_oid FROM (SELECT a.c_oid FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :NEW.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE ROWNUM =1 ;
IF position_effdate <= :NEW.c_effectivedate THEN
--INSERT INTO A_TEMP VALUES('插入的是最新的');
UPDATE tb_inf_employee t SET t.c_positionlevel = :NEW.c_postionlevel,
t.c_positionorder = :NEW.c_postioncluster WHERE t.c_employeeid = :NEW.C_EMPOID;
END IF;
ELSIF position_effdate > :NEW.c_effectivedate THEN
--INSERT INTO A_TEMP VALUES('插入的不是最新的,没有影响');
UPDATE tb_inf_employee t SET t.c_positionlevel = position_level,
t.c_positionorder = position_order WHERE t.c_employeeid = :NEW.C_EMPOID;
END IF;
END IF;
--以前没有记录,插入一条记录。
IF cou = 0 THEN
UPDATE tb_inf_employee t SET t.c_positionlevel = :NEW.c_postionlevel,
t.c_positionorder = :NEW.c_postioncluster WHERE t.c_employeeid = :NEW.C_EMPOID;
END IF;
IF deleting THEN
SELECT COUNT(*) INTO cou FROM (SELECT a.c_oid FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :OLD.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC);
-- INSERT INTO A_TEMP VALUES('行级别触发器after');
--INSERT INTO A_TEMP VALUES(position_oid);
-- INSERT INTO A_TEMP VALUES( to_char(position_effdate,'fmdd month yyyy') );
-- INSERT INTO A_TEMP VALUES(position_level);
--INSERT INTO A_TEMP VALUES(position_order);
-- IF(:OLD.c_oid == )
--不是最后一条记录,排除:old.oid所在记录,排序取最大值
IF cou <> 1 THEN
SELECT c_postionlevel INTO position_level FROM (SELECT a.c_postionlevel FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_oid <> :OLD.c_oid AND a.c_empoid = b.c_employeeid AND a.c_empoid = :OLD.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE ROWNUM =1 ;
SELECT c_effectivedate INTO position_effdate FROM (SELECT a.c_effectivedate FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_oid NOT IN (:OLD.c_oid) AND a.c_empoid = b.c_employeeid AND a.c_empoid = :OLD.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE ROWNUM =1 ;
SELECT c_postioncluster INTO position_order FROM (SELECT a.c_postioncluster FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_oid NOT IN (:OLD.c_oid) AND a.c_empoid = b.c_employeeid AND a.c_empoid = :OLD.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE ROWNUM =1 ;
SELECT c_oid INTO position_oid FROM (SELECT a.c_oid FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :OLD.c_empoid AND a.c_oid <> :old.c_oid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE ROWNUM =1 ;
UPDATE tb_inf_employee t SET t.c_positionlevel = position_level,
t.c_positionorder = position_order WHERE t.c_employeeid = :OLD.C_EMPOID;
END IF;
--删除最后一条记录,都置空
IF cou = 1 THEN
UPDATE tb_inf_employee t SET t.c_positionlevel = '',
t.c_positionorder = '' WHERE t.c_employeeid = :OLD.C_EMPOID;
END IF;
END IF;
IF UPDATing THEN
INSERT INTO A_TEMP VALUES('更新开始=====================================');
--更新之前的,最大生效日期,和最大生效日期对应的id
SELECT c_effectivedate INTO position_effdate FROM (SELECT a.c_effectivedate FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :NEW.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE ROWNUM =1 ;
INSERT INTO A_TEMP VALUES('更新之前的原排序最大生效日期:');
INSERT INTO a_temp VALUES(position_effdate);
SELECT c_oid INTO position_oid FROM (SELECT a.c_oid FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :NEW.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE ROWNUM =1 ;
INSERT INTO A_TEMP VALUES('更新之前的原排序最大记录oid:');
INSERT INTO a_temp VALUES(position_oid);
--未修改生效时间,未影响排序
IF :NEW.c_effectivedate = :OLD.c_effectivedate THEN
INSERT INTO A_TEMP VALUES(' 1 此次修改,未修改生效日期!');
SELECT CASE WHEN :new.c_oid = c_oid THEN :NEW.c_postionlevel ELSE c_postionlevel END INTO position_level FROM (SELECT a.c_oid, a.c_postionlevel FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :NEW.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE ROWNUM =1 ;
SELECT CASE WHEN :new.c_oid = c_oid THEN :new.c_postioncluster ELSE c_postioncluster END INTO position_order FROM (SELECT a.c_oid,a.c_postioncluster FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :NEW.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE ROWNUM =1 ;
--SELECT c_oid INTO position_oid FROM (SELECT a.c_oid FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :NEW.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE ROWNUM =1 ;
--INSERT INTO A_TEMP VALUES('行级别触发器after');
--INSERT INTO A_TEMP VALUES(position_oid);
-- INSERT INTO A_TEMP VALUES( to_char(position_effdate,'fmdd month yyyy') );
-- INSERT INTO A_TEMP VALUES(position_level);
-- INSERT INTO A_TEMP VALUES(position_order);
UPDATE tb_inf_employee t SET t.c_positionlevel = position_level,
t.c_positionorder = position_order WHERE t.c_employeeid = :NEW.C_EMPOID;
END IF;
--修改生效时间,以前的查询结果的生效时间最大值不是修改的项,修改的生效日期 大于等于 原排序结果的生效日期,取新的
IF :NEW.c_effectivedate <> :OLD.c_effectivedate AND position_oid <> :OLD.c_oid AND :NEW.c_effectivedate >= position_effdate THEN
INSERT INTO A_TEMP VALUES(' 2 此次修改,修改了生效日期!且原排序最大值不是dirty!且改后的生效日期 大于 原排序最大生效日期!');
UPDATE tb_inf_employee t SET t.c_positionlevel = :NEW.c_postionlevel,
t.c_positionorder = :new.c_postioncluster WHERE t.c_employeeid = :NEW.C_EMPOID;
END IF;
--修改生效时间,以前的查询结果的生效时间最大值不是修改的项,修改的生效日期 小于 原排序结果的生效日期,取原生效结果的
IF :NEW.c_effectivedate <> :OLD.c_effectivedate AND position_oid <> :OLD.c_oid AND :NEW.c_effectivedate < position_effdate THEN
INSERT INTO A_TEMP VALUES(' 3 此次修改,修改了生效日期!且原排序最大值不是dirty!且改后的生效日期 小于 原排序最大生效日期!');
SELECT CASE WHEN :new.c_oid = c_oid THEN :NEW.c_postionlevel ELSE c_postionlevel END INTO position_level FROM (SELECT a.c_oid, a.c_postionlevel FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :NEW.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE ROWNUM =1 ;
SELECT CASE WHEN :new.c_oid = c_oid THEN :new.c_postioncluster ELSE c_postioncluster END INTO position_order FROM (SELECT a.c_oid,a.c_postioncluster FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :NEW.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE ROWNUM =1 ;
--INSERT INTO A_TEMP VALUES('行级别触发器after');
--INSERT INTO A_TEMP VALUES(position_oid);
-- INSERT INTO A_TEMP VALUES( to_char(position_effdate,'fmdd month yyyy') );
-- INSERT INTO A_TEMP VALUES(position_level);
-- INSERT INTO A_TEMP VALUES(position_order);
UPDATE tb_inf_employee t SET t.c_positionlevel = position_level,
t.c_positionorder = position_order WHERE t.c_employeeid = :NEW.C_EMPOID;
END IF;
--修改生效时间,以前的查询结果的最大生效日期就是修改的项,且修改后的日期 大于等于原来排序结果生效日期,取新的
IF :NEW.c_effectivedate <> :OLD.c_effectivedate AND position_oid = :OLD.c_oid AND :NEW.c_effectivedate >=position_effdate THEN
INSERT INTO A_TEMP VALUES(' 4 (调大最大生效日期的日期)此次修改,修改了生效日期!且原排序最大值是dirty!且改后的生效日期 >= 原排序最大生效日期!');
UPDATE tb_inf_employee t SET t.c_positionlevel = :NEW.c_postionlevel,
t.c_positionorder = :new.c_postioncluster WHERE t.c_employeeid = :NEW.C_EMPOID;
END IF;
--修改生效时间,以前的查询结果的生效时间最大值是修改的项,修改的生效日期 小于 原排序结果的生效日期,取原生效结果的第二行记录,然后比较
IF :NEW.c_effectivedate <> :OLD.c_effectivedate AND position_oid = :OLD.c_oid AND :NEW.c_effectivedate <position_effdate THEN
INSERT INTO A_TEMP VALUES(' 5 (调小最大生效日期的日期,此时与第二大生效日期比较)此次修改,修改了生效日期!且原排序最大值是dirty!且改后的生效日期 < 原排序最大生效日期!');
--SELECT c_postionlevel INTO position_level FROM (SELECT ROWNUM rn,a.c_oid, a.c_postionlevel FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :NEW.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE rn = 2 ;
--SELECT c_postioncluster INTO position_order FROM (SELECT ROWNUM rn,a.c_oid,a.c_postioncluster FROM TB_PER_POSITONLEVEl a,tb_inf_employee b WHERE a.c_empoid = b.c_employeeid AND a.c_empoid = :NEW.c_empoid ORDER BY nvl(a.C_EFFECTIVEDATE,TO_DATE('1900/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS') ) DESC,a.c_operatetime DESC) WHERE rn = 2 ;
SELECT C_EFFECTIVEDATE INTO position_effdate
FROM (SELECT ROWNUM RN, C_EFFECTIVEDATE
FROM (SELECT A.C_EFFECTIVEDATE
FROM TB_PER_POSITONLEVEL A, TB_INF_EMPLOYEE B
WHERE A.C_EMPOID = B.C_EMPLOYEEID
AND A.C_EMPOID = :NEW.c_empoid
ORDER BY NVL(A.C_EFFECTIVEDATE,
TO_DATE('1900/01/01 00:00:00',
'YYYY/MM/DD HH24:MI:SS')) DESC,
A.C_OPERATETIME DESC))
WHERE RN = 2;
SELECT c_postioncluster INTO position_order
FROM (SELECT ROWNUM RN, c_postioncluster
FROM (SELECT A.c_postioncluster
FROM TB_PER_POSITONLEVEL A, TB_INF_EMPLOYEE B
WHERE A.C_EMPOID = B.C_EMPLOYEEID
AND A.C_EMPOID = :NEW.c_empoid
ORDER BY NVL(A.c_postioncluster,
TO_DATE('1900/01/01 00:00:00',
'YYYY/MM/DD HH24:MI:SS')) DESC,
A.C_OPERATETIME DESC))
WHERE RN = 2;
SELECT c_postionlevel INTO position_level
FROM (SELECT ROWNUM RN, c_postionlevel
FROM (SELECT A.c_postionlevel
FROM TB_PER_POSITONLEVEL A, TB_INF_EMPLOYEE B
WHERE A.C_EMPOID = B.C_EMPLOYEEID
AND A.C_EMPOID = :NEW.c_empoid
ORDER BY NVL(A.c_postionlevel,
TO_DATE('1900/01/01 00:00:00',
'YYYY/MM/DD HH24:MI:SS')) DESC,
A.C_OPERATETIME DESC))
WHERE RN = 2;
--%%如果新记录日期 < 第二个最大的,取第二个最大的。
IF :NEW.c_effectivedate < position_effdate THEN
INSERT INTO A_TEMP VALUES(' 5.1调小最大生效日期的日期 < 原排序第二条最大记录');
INSERT INTO A_TEMP VALUES(position_level);
UPDATE tb_inf_employee t SET t.c_positionlevel = position_level,
t.c_positionorder = position_order WHERE t.c_employeeid = :NEW.C_EMPOID;
END IF;
--%%如果新记录日期 > =第二个最大的,取新纪录 。
IF :NEW.c_effectivedate >= position_effdate THEN
INSERT INTO A_TEMP VALUES('修改生效日期,原排序最大值是dirty,找第二条最大记录,且新日期大于第二条最大记录');
UPDATE tb_inf_employee t SET t.c_positionlevel = :NEW.c_postionlevel,
t.c_positionorder = :new.c_postioncluster WHERE t.c_employeeid = :NEW.C_EMPOID;
END IF;
END IF;
INSERT INTO A_TEMP VALUES('更新ENDING============================================');
END IF;
COMMIT;
END TB_PER_POSITONLEVEL_TRI;
====================================================================
一定要注意有order by 的rownum的位置。蓝色字体可以查看rownum是否正确。
select * From (select rownum rn,表.* from 表) where rn = 2这么用
发表评论
-
【转】数据库事务的四大特性以及事务的隔离级别
2017-10-12 23:09 539本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说 ... -
oracle连接plsql
2015-07-27 16:02 594oracle查看本机服务名 在cmd命令窗口: ... -
【转】oracle查询:取出每个分组中的第一条记录
2015-05-27 17:26 3479排序后取第一条记录 select * from (sel ... -
【转】java 调用存储过程 实例
2015-05-06 14:55 497共4个 一.只有输入参数没有返回结果的存储过程 二. 有 ... -
【转】Oracle导出表(即DMP文件)的两种方法
2015-05-04 20:00 872方法一:利用PL/SQL Developer工具导出: ... -
【转】Oracle创建表空间、创建用户以及授权
2015-05-04 20:00 560Oracle安装完后,其中有一个缺省的数据库,除了这个缺省 ... -
【转】ORA-12519错误解决方案
2015-05-04 19:54 997系统正常运行一个月后,上线第一天出现了下列错误,想了很久没有 ... -
【转】查看修改表空间sql语句
2015-05-01 16:26 555--所有表ower, 表名,表空间名 select ... -
【转】Oracle带输入输出参数的存储过程
2015-04-30 22:33 819(一)使用输入参数需求:在emp_copy中添加一条记录,em ... -
【转】oracle存储过程、声明变量、for循环
2015-04-30 22:20 1281oracle存储过程、声明变量、for循环 1、创建存储 ... -
【转】Oracle数据库备份之exp/imp用法
2015-04-30 22:16 571------------------------------ ... -
【转】 oracle单行函数
2015-04-22 10:17 747虽然各个数据库都是支持SQL语句的,但是每一个数据库也有每一 ... -
【转】Oracle中group by用法
2015-04-21 18:22 573在select 语句中可以使用group by 子句将行划分 ... -
【转】Oracle中sign函数和decode函数的使用
2015-04-20 15:09 628Oracle中sign函数和decode函数的使用 ... -
[转]Oracle字符串拼接的方法
2015-04-09 14:43 2176本文转自:http://www.blogjava.net/l ... -
【转】oracle 10g怎么导入dmp文件,在windows下
2015-03-06 16:19 13开始-->运行-->输入cmd或是wind ... -
【转】Oracle新建用户、角色,授权,建表空间
2015-03-03 17:03 17oracle数据库的权限系统分为系统权限与对象权限。系统权限 ... -
【转】Oracle数据库-建库、建表空间,建用户
2015-03-02 16:54 21Oracle安装完后,其中有一个缺省的数据库,除了这个缺省 ... -
oracle ASCII字符串<==>16进制串
2013-01-19 07:42 1590sql中可以直接插入16进制字串表示的数据到blob表中。如 ... -
【转】Oracle中Decode()函数使用技巧
2012-11-19 14:36 953decode()函数是ORACLE PL/SQL是 ...
相关推荐
后记部分可能总结了项目实施的过程、遇到的问题以及解决方案,对于学习和改进数据库设计有重要意义。 综上所述,这个课程设计涵盖了数据库管理系统的核心概念,包括需求分析、概念结构设计、逻辑结构设计、SQL操作...
SQLite 是一个文件型数据库,每个数据库是一个文件,可以建立多个表、索引、触发器等。 基本流程 i. 关键数据结构:sqlite3* 类型是 SQLite 中最常用的数据结构,从数据库打开开始,SQLite 就要为这个类型准备好...
**后记** 系统设计完成后,经过测试和调整,确保其稳定性和实用性。该系统不仅能满足世界杯赛事信息管理的需求,也为其他大型体育赛事的信息管理提供了参考。 总之,这个世界杯赛事信息管理系统是一个综合性的...
后记 - **持续学习与社区参与**:鼓励开发者深入理解OSWorkflow的工作原理,积极参与开源社区,共享知识和经验,共同促进工作流引擎的发展。 综上所述,OSWorkflow不仅是一个强大的工作流引擎,还提供了丰富的功能...
### 触发器设计 可能包含对数据更新时自动执行的操作,如自动更新射手榜、积分榜等。 ### 后记 总结设计过程、经验教训及未来改进方向。 该课程设计综合运用了数据库理论与实践,展示了如何通过数据库技术解决实际...
#### 十六、后记 - **总结**:回顾OSWorkflow的学习和使用心得,并提出未来可能的发展方向。 通过以上内容,我们可以了解到OSWorkflow不仅是一个强大的工作流引擎,还具有高度的灵活性和可扩展性。无论是初学者还是...
涵盖触发器、存储过程、视图、分区表、事务处理等进阶话题。 学习新的数据库 了解其他数据库系统,如PostgreSQL、Oracle,可以帮助拓展数据库管理技能。 后记 持续学习和实践是掌握MySQL的关键。随着技术的发展,...
**注意事项和后记** 在实际迁移过程中,可能还会遇到其他问题,如触发器、存储过程、视图、序列(Sequence)等的迁移。Oracle 的序列在 DB2 中可能需要转换为生成序列的触发器或者自增列。视图的定义也需要在目标...
- **触发器设计**:响应特定数据库事件,自动执行操作。 - **并发处理设计**:包括事务管理和锁机制,确保多用户环境下的数据一致性。 7. **安全性设计**: - **身份认证**:验证用户身份。 - **用户管理**:...
学生需学习如何根据实际需求制定监控模板、触发器和报警策略。 #### 教学方法 - **理论讲授**:通过PPT展示Zabbix监控原理、SNMP协议机制等内容。 - **实践操作**:分组练习,每组学生完成Zabbix服务器的安装配置、...
- 使用触发器辅助增强数据安全,防止恶意篡改。 4. **后记**: - 数据安全需要全方位的策略和规范,每个参与者的安全意识至关重要。只有当所有人都重视并遵循这些规范,才能构建出真正安全的信息环境。 综上所述...
本书由专业Informix用户、数据库管理员、Informix管理员和应用程序开发员编写而成,把各大Informix产品的方方面面综合、深入地集中在一起,包括最新Informix产品的详细信息,如Informix Internet Foundation....后记