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相容性之-roundintervalSQLOracle
- PostgreSQLOracle相容性-Analysis函式之keepSQLOracle函式
- 理解PG的xmin和xmax的幾個小實驗
- PostgreSQLOracle相容性之-全域性臨時表globaltemptableSQLOracle
- PostgreSQLOracle相容性-connectby2SQLOracle
- PostgreSQLOracle相容性之-PL/SQLDETERMINISTIC與PG函式穩定性(immutable,stable,volatile)SQLOracle函式
- PostgreSQL的CTIDSQL
- 關於PostgreSQL的系統資訊函式的OIDSQL函式
- PostgreSQLoracle相容性-字串內嵌NULL字元(空字元)chr(0)轉換為chr(32)SQLOracle字串Null字元
- oid轉blob問題
- openGauss/MogDB的uncommitted xmin問題解決MIT
- CATIA許可證與作業系統的相容性作業系統
- 寶塔皮膚系統和環境的相容性?
- windows10系統設定相容性檢視的方法Windows
- Hadoop生態系統各元件與Yarn的相容性如何?Hadoop元件Yarn
- PostgreSQL DBA(24) - MVCC#4(快照中的xmax)SQLMVCC#
- bootstrap 柵格系統 列巢狀 列偏移boot巢狀
- #系統之美# 不完美的系統
- Win10系統怎麼進行相容性測試【圖文】Win10
- win10系統ie設定相容性檢視設定方法Win10
- Linux系統程式設計之程式間通訊方式:訊息佇列Linux程式設計佇列
- 如何系統學習C 語言(中)之 聯合體、列舉篇
- PostgreSQLOraclePL/SQL相容性之-AGGREGATEUSINGClause聚合函式SQLOracleGC函式
- Android 隱藏系統狀態列Android
- TDengine 與煤礦智慧 AI 影片管理系統實現相容性互認AI
- win10系統360瀏覽器相容性站點怎麼新增Win10瀏覽器
- win10系統下玩lol英雄聯盟如何設定相容性Win10
- 安裝Win10 1803系統之後工作列消失的解決方法Win10
- 【RAC啟動故障】ORA-21561: OID generation failedAI
- 制定測試計劃之相容性測試
- AOSP之修改系統AppAPP
- ABP之模組系統
- 版本控制系統之gitGit
- 重灌系統感悟之設定系統還原點
- 測試開發之系統篇-常用系統命令
- dotnet 8 版本與銀河麒麟V10和UOS系統的 glib 相容性
- dotnet 8 版本與銀河麒麟V10和UOS系統的 glibc 相容性
- java B2B2C Springboot電子商城系統-訊息佇列之 RabbitMQJavaSpring Boot佇列MQ
- PostgreSQL中將物件oid和物件名相互轉換SQL物件