关于Oracle事务的总结
关于Oracle事务的总结
1.什么是事务,事务的特性是什么?
事务的任务便是使数据库从一种状态变换成为另一种状态,这不同于文件系统,它是数据库所特用的。它的特性有四个:TOM总结为ACID即
原子性atomicity:语句级原子性,过程级原子性,事务级原子性
一致性consistency:状态一致,同一事务中不会有两种状态
隔离性isolation:事务间是互相分离的互不影响(这里可能也有自治事务)
持久性durability:事务提交了,那么状态就是永久的
对于语句级原子性,过程级原子性和事务级原子性可以查阅一下相关的信息
2.Oracle中的事务语句
commit=commit work 提交
rollback=rollback work 回滚
savepoint 事务的标记点,可以使一个事务在回滚到不同的阶段
set transaction 开始一个事务
rollback to savepoint 与savepoint对应
另外对于自治事务还有一个,下面会着重说一下关于自治事务
pragma autonomous_transaction
3.关于完整性约束与事务的关系
完整性约束的模式有immediate,deferred等
语法:set constraint c_fk defereed
这对于级联更新很有帮助,如下面的tom在书中举的例子:
SQL> create table p(pk int primary key);
表已创建。
SQL> create table c
2 (fk constraint c_fk
3 references p(pk)
4 deferrable
5 initially immediate
6 )
7 /
表已创建。
语句: set constraint c_fk immediate;
set constraint c_fk deferred;
SQL> set constraint c_fk immediate;
约束条件已设置。
SQL> update p set pk=3;
update p set pk=3
*
ERROR 位于第 1 行:
ORA-02292: integrity constraint (FTITEM.C_FK) violated - child record found
SQL> set constraint c_fk deferred;
约束条件已设置。
SQL> update p set pk=3;
已更新 1 行。
SQL> update c set fk=3;
已更新 1 行。
SQL> commit;
提交完成。
SQL> set constraint c_fk immediate;
约束条件已设置。
4.在事务中两个不好的方法
tom在书上提到了两种不好的事务使用习惯,我在工作中也是经常犯的,主要是因为对于每种数据库的认识不到位,听好多朋友说数据库你只要会用了一个其它的就可以了,经过这段时间的学习,其实我们所说的会只是说对一SQL语句等,而并不是理解,比
相关文档:
自增字段:
表atable(id,a) id需要自增 首先建立一个序列:
create sequence seq_atable minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 nocache
有二种方式使用自增字段:
使用序列+触发器实现自增,插入语句不需要管自增字段
如:create or replace trigger trg_atable before insert on ......
通过JDBC,我们可以向oracle插入大对象,如图片,音频,长文本等,其插入方法有很多,这里演示一下通过流更新更新的形式插入CLOB大对象。
这是一个存储文本的例子,解释我会在程序中以注释的形式写出
/**
* 将生成的表样存储到数据库
*
* @param htmlParam
* @return
*/
  ......
1.在ORACLE中用select * from all_users显示所有的用户,而在MYSQL中显示所有数据库的命令是show
databases。对于我的理解,ORACLE项目来说一个项目就应该有一个用户和其对应的表空间,而MYSQL项目中也应该有个用户和一个库。在
ORACLE(db2也一样)中表空间是文件系统中的物理容器的逻辑表示,视图、触发器和存储过程也可 ......
ORACLE bin目录下各文件的意义及使用方法
$ORACLE_HOME/bin下的utilities解释
Binary First Available Description
--------- ......
1。web.config ----appSettings--<add key="LimsConnection" value="data source=yzlims;user id=lims;password = lims"/>
2. c#代码中
using System.Data.OracleClient;
public DataTable GetLimsTimeInSpace(string S_SAMPLE_NAME, string S_SAMPLING_P_N,Date ......