PostgreSQLOracle相容性之-系統列(ctid,oid,cmin,cmax,xmin,xmax)
標籤
PostgreSQL , Oracle , 相容性 , ctid , cmin , cmax , xmin , xmax , oid
背景
PostgreSQL中有一些系統列(即行的頭部資訊的列),例如物理行號,COMMAND ID,事務號,以及OID。
當我們建表時,不能使用衝突的列名,否則會報錯:
postgres=# create table a(ctid int);
錯誤: 42701: 欄位名 "ctid" 與系統欄位名衝突
LOCATION: CheckAttributeNamesTypes, heap.c:439
當Oracle使用者要遷移到PG,遇到這樣的問題怎麼辦呢?讓使用者改程式好像不太現實。
解決辦法
建立影子表(將衝突欄位重新命名)
postgres=# create table tbl_shadow(n_ctid int, n_xmin int, n_max int, n_oid int);
CREATE TABLE
建立檢視(作為業務程式中用於互動的表名),可以採用衝突欄位,解決了相容性問題。
postgres=# create view tbl1 as select n_ctid as ctid, n_xmin as xmin, n_max as xmax, n_oid as oid from tbl_shadow ;
CREATE VIEW
對檢視進行增刪改查,會自動轉換為對錶的增刪改查。
postgres=# insert into tbl1 (ctid,xmin,xmax,oid) values (1,1,1,1);
INSERT 0 1
postgres=# select ctid from tbl1;;
ctid
------
1
(1 row)
postgres=# update tbl1 set xmax=2;
UPDATE 1
postgres=# select * from tbl1;
ctid | xmin | xmax | oid
------+------+------+-----
1 | 1 | 2 | 1
(1 row)
相關文章
- PostgreSQLOracle相容性之NUMTODSINTERVALSQLOracle
- PostgreSQLOracle相容性之-roundintervalSQLOracle
- PostgreSQLOracle相容性-Analysis函式之keepSQLOracle函式
- 理解PG的xmin和xmax的幾個小實驗
- PostgreSQLOracle相容性-synonym匿名SQLOracle
- PostgreSQLOracle相容性之-全域性臨時表globaltemptableSQLOracle
- PostgreSQLOracle相容性之-PartitionByOuterJoin實現稠化報表SQLOracle
- PostgreSQLOracle相容性-connectby2SQLOracle
- PostgreSQLOracle相容性-substrb-orafcesubstrb適配OraclesubstrbSQLOracle
- PostgreSQLOracle相容性之-PL/SQLDETERMINISTIC與PG函式穩定性(immutable,stable,volatile)SQLOracle函式
- SNMP OID批量列舉工具
- 關於PostgreSQL的系統資訊函式的OIDSQL函式
- PostgreSQL的CTIDSQL
- PostgreSQLoracle相容性-字串內嵌NULL字元(空字元)chr(0)轉換為chr(32)SQLOracle字串Null字元
- PostgreSQLOracle相容性之-connectby高階選項CONNECT_BY_ISLEAF、SYS_CONNECT_BY_PATH、CONNECT_BY_ISCYCLE、LEVELSQLOracle
- win10系統相容性怎麼設定?Win10
- PostgreSQL DBA(24) - MVCC#4(快照中的xmax)SQLMVCC#
- 列舉系統裝置
- windows10系統設定相容性檢視的方法Windows
- bootstrap 柵格系統 列巢狀 列偏移boot巢狀
- PostgreSQLMySQL相容性之-Gis型別MySql型別
- PostgreSQLMySQL相容性之-數字型別MySql型別
- Hadoop生態系統各元件與Yarn的相容性如何?Hadoop元件Yarn
- 剖析 Laravel 佇列系統--WorkerLaravel佇列
- openGauss/MogDB的uncommitted xmin問題解決MIT
- 叫號系統排隊系統掛號系統實現(JAVA佇列)Java佇列
- #系統之美# 不完美的系統
- PostgreSQLMySQL相容性之-時間型別MySql型別
- 如何系統學習C 語言(中)之 聯合體、列舉篇
- Win10系統怎麼進行相容性測試【圖文】Win10
- win10系統ie設定相容性檢視設定方法Win10
- win10系統升級後遊戲的相容性怎麼樣Win10遊戲
- 詳解Linux作業系統裝置驅動相容性(轉)Linux作業系統
- ora-21561 OID generation failedAI
- ORA-21561: OID generation failedAI
- Linux命令列得到系統IPLinux命令列
- javascript型別系統——陣列arrayJavaScript型別陣列
- 用grub命令列啟動系統命令列