ORACLE中一个UPDATE的操作流程
前阵子看到一篇关于DELETE操作的具体的流程,今天无意间又看到一个UPDATE的操作流程,挺有趣的,转过来学习学习!
================================================================================
1,用户提交一个update语句
2,server process检查内存缓存
i 如果没有有效内存空间,启动DBWR,将缓存中未写入磁盘的脏数据块写入
ii 如果有有效空间,从磁盘读入数据
3,在缓存内更新数据
i 申请一个回滚段入口,将旧数据写入回滚段
ii 加锁更新数据
iii 并同时将修改记录在Redo log buffer 中
4,用户提交一个Commit
i SCN增加
ii 将Redo log buffer 写入Redo log file
iii 告诉用户 Commit完成
相关文档:
建表
create table <table_name>(
column_name1 column_type [not null] [check (expression)]
[default value] [primary key][references <table_name>(column_name)],
column_name2 column_type [not null] [check (expression)]
[default value] [prima ......
对日常工作中用到的感觉有用的sql语句做个归纳,用于今后温故知新。
*复制表:
create table tablename as select * from table_src;
create table tablename as select * from table_src where 1 <> 1; --只复制表结构 ......
SELECT max(SYS_CONNECT_BY_PATH(COLUMN_NAME, ','))
from (SELECT A.COLUMN_NAME, ROWNUM AS ROWNO
from USER_TAB_COLUMNS A
WHERE TABLE_NAME = 'A_USER'
  ......
通常我們在建立 PostgreSQL/Oracle 資料庫的時候, 如果要使用 MySQL/MS-SQL identity 雷同的功能, 就是要採用 Sequence 來建立, 而為了每一個 Table 都有獨立的序號產生器, 我們會建立個別的 sequence.
例如 (PostgreSQL samp ......