真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

postgresql增加的簡(jiǎn)單介紹

如何在Postgresql中創(chuàng)建序列數(shù)并應(yīng)用在數(shù)據(jù)表

序列數(shù)可以增加postgresql數(shù)據(jù)表的檢索速度,同時(shí)降低數(shù)據(jù)查詢時(shí)的資源消耗。那么如何在postgresql中創(chuàng)建序列數(shù)并且應(yīng)用呢?下面我給大家分享一下。

十載的庫(kù)車網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整庫(kù)車建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“庫(kù)車網(wǎng)站設(shè)計(jì)”,“庫(kù)車網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

工具/材料

pgAdmin4

創(chuàng)建序列數(shù)

首先打開pgAdmin4,展開postgresql數(shù)據(jù)庫(kù),找到模式下面的public選項(xiàng),如下圖所示

接下來在public下面右鍵單擊序列,然后點(diǎn)擊Create下面的sequence選項(xiàng),如下圖所示

在彈出的創(chuàng)建Sequence界面中首先給序列數(shù)起一個(gè)名字,如下圖所示,注意都用英文

然后切換到Definition頁(yè)卡,定義一下序列的增加量,如下圖所示,其中maximum根據(jù)自己的需要進(jìn)行設(shè)置

最后回到數(shù)據(jù)庫(kù)主界面,你會(huì)看到序列下面多出了一個(gè)項(xiàng),這就是我們創(chuàng)建的序列數(shù)了,如下圖所示

在數(shù)據(jù)表中應(yīng)用序列數(shù)

首先選中一個(gè)數(shù)據(jù)表,點(diǎn)擊右側(cè)的編輯按鈕,如下圖所示

在彈出的編輯界面中切換到Columns頁(yè)卡,點(diǎn)擊ID簽名的編輯按鈕,如下圖所示

最后在字段的編輯界面中切換到Variables選項(xiàng)卡,然后在Value列中通過nextval函數(shù)帶入剛才定義的序列數(shù)即可,如下圖所示

PostgreSQL如何添加數(shù)據(jù)庫(kù)?

找到運(yùn)行腳本的地方,文本復(fù)制進(jìn)去,點(diǎn)運(yùn)行,數(shù)據(jù)庫(kù)就創(chuàng)建好了。

如何為 PostgreSQL 增加系統(tǒng)表字段

1為pg_database增加一個(gè)字段 datdummy,打開 /src/include/catalog/pg_database.h:

CATALOG(pg_database,1262) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248) BKI_SCHEMA_MACRO

{

NameData datname; /* database name */

Oid datdba; /* owner of database */

int32 encoding; /* character encoding */

NameData datcollate; /* LC_COLLATE setting */

NameData datctype; /* LC_CTYPE setting */

bool datistemplate; /* allowed as CREATE DATABASE template? */

bool datallowconn; /* new connections allowed? */

int32 datconnlimit; /* max connections allowed (-1=no limit) */

Oid datlastsysoid; /* highest OID to consider a system OID */

TransactionId datfrozenxid; /* all Xids this are frozen in this DB */

TransactionId datminmxid; /* all multixacts in the DB are = this */

Oid dattablespace; /* default table space for this DB */

#ifdef CATALOG_VARLEN /* variable-length fields start here */

aclitem datacl[1]; /* access permissions */

#endif

} FormData_pg_database;

/* ----------------

* Form_pg_database corresponds to a pointer to a tuple with

* the format of pg_database relation.

* ----------------

*/

typedef FormData_pg_database *Form_pg_database;

/* ----------------

* compiler constants for pg_database

* ----------------

*/

#define Natts_pg_database 13

#define Anum_pg_database_datname 1

#define Anum_pg_database_datdba 2

#define Anum_pg_database_encoding 3

#define Anum_pg_database_datcollate 4

#define Anum_pg_database_datctype 5

#define Anum_pg_database_datistemplate 6

#define Anum_pg_database_datallowconn 7

#define Anum_pg_database_datconnlimit 8

#define Anum_pg_database_datlastsysoid 9

#define Anum_pg_database_datfrozenxid 10

#define Anum_pg_database_datminmxid 11

#define Anum_pg_database_dattablespace 12

#define Anum_pg_database_datacl 13

它們最終會(huì)被腳本 genbki.pl 利用生成 postgresql.bki文件,用在 initdb 初始化 data cluster 時(shí),有興趣可以自己學(xué)習(xí)一下,PG編譯系統(tǒng)也是一個(gè)充分展示強(qiáng)大 perl 語(yǔ)言的系統(tǒng);

3、在 dattablespace 下增加新定義:

int8 datdummy; /* dummy column */

后邊字段序號(hào)的定義也是很重要的,必須按順序修改,也要記得屬性數(shù)相應(yīng)修改:

#define Natts_pg_database 14

...

#define Anum_pg_database_dattablespace 12

#define Anum_pg_database_datdummy 13

#define Anum_pg_database_datacl 14

預(yù)定義的數(shù)據(jù)庫(kù)必須也要修改,_null_ 前邊增加 100的字段為 datdummy 數(shù)據(jù):

DATA(insert OID = 1 ( template1 PGUID ENCODING "LC_COLLATE" "LC_CTYPE" t t -1 0 0 1 1663 100 _null_));

4、編譯運(yùn)行,會(huì)發(fā)生什么,編譯正常,然后 initdb,竟然也神奇的通過了,難道這就好了嗎?

Tip:Linux 下不停在一個(gè)目錄下改代碼,可能會(huì)遇到莫名的程序問題,試試 make clean

5、那么創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)試試看:CREATE DATABASE quanzl; 成功了,是不是感覺似乎還缺點(diǎn)什么?

datdummy的賦值,總不能 UPDATE pg_database SET datdummy = xxx 吧?

預(yù)訂義的數(shù)據(jù)庫(kù)比如template1,我們可以在catalog里邊定義 BKI 腳本,比如上邊的例子,給它一個(gè)初始值。程序里也必須有所改動(dòng)才能成為可操作屬性;

6、參照語(yǔ)法修改,創(chuàng)建一個(gè) CREATE DATABASE xxx DUMMY nnn語(yǔ)法,修改結(jié)構(gòu)體 CreatedbStmt 增加新屬性,語(yǔ)法分析階段將此值讀入,創(chuàng)建數(shù)據(jù)庫(kù)時(shí)將它寫入屬性;

new_record[Anum_pg_database_datdummy - 1] = 1234;

此部分代碼在 src/backend/commands/dbcommands.c 中,自行閱讀好了,寫程序就這么簡(jiǎn)單。:)


文章標(biāo)題:postgresql增加的簡(jiǎn)單介紹
鏈接URL:http://weahome.cn/article/dsdjjsi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部