oracle约束、锁、事物

DDL操作

建表语句:create table

(column列 datatype数据类型 constraint约束)

 列级约束: 

CREATE TABLE BOOKS

BK_ID NUMBER (4) CONSTRAINT BK_PK PRIMARY KEY (BK_ID),

 

 

BK_TITLE VARCHAR(50) NOT NULL,

 

BK_DESC VARCHAR(50)

);

 

 

 表级约束:

CREATE TABLE BOOKS

BK_ID NUMBER (4) NOT NULL,

BK_TITLE VARCHAR(50) NOT NULL,

BK_DESC VARCHAR(50),

CONSTRAINT BK_PK PRIMARY KEY (BK_ID)

);

添加主键约束 ALTER TABLE BOOKS ADD CONSTRAINT BK_PK PRIMARY KEY (BK_ID);

删除表的同时,删除约束:drop table cascade constraint purge;

DML

insert

update:

ATM转账1000

update account set balence = balence-1000 where id='A'

updat account set balance =balance+1000 where id='B'

一笔交易看成一个原子操作,要么一起做,要么都不做

delete

TCL(transaction)

commit

rollback

savepoint (保留点)实现的部分回滚

在开发多用户,数据库驱动的应用程序中,关键性的挑战之一是要使并行的访问量达到最大化,同时还要保证每一个用户(会话)可以以一致的方式读取并修改数据。

锁机制:

   用来管理对一个共享资源的并行访问

多版本一致读:

  非阻塞查询:写不阻塞读,读不阻塞写

  一致读查询:在某一时刻查询产生一致性结果

排他锁(X锁)exclusive

如果一个对象加上了X锁,在这个锁被采用之后,知道commit或rollback释放它之前,该对象不能施加任何其他类型的锁

共享锁:

 

为确保并发用户能正确的使用与管理共享资源,如表中的记录,oracle引导锁机制

DML(insert update )锁:

  用于保护数据的完整性

---TX锁,即事物锁(行级锁),类型为X锁

---TM锁,即意向锁(表级锁),属于一种S锁

 

  表级锁共享      行级排他锁

s1  ok    ok

s2  ok    wait

s3  ok    ok  行级锁只是在两个人同时操作同一条数据的时候才感觉到彼此的存在

DDL锁:

用于保护数据库对象的结构(例如表,索引的结构定义)

--X类型的DDL锁,这些锁定防止其他会话自己获得DDL锁定或者TM(DML)锁定。这意味着可以在DDL其间查询一个表,但不可以以任何方式进行修改

 

 

posted @ 2013-06-04 11:29  turnhopes  阅读(183)  评论(0)    收藏  举报