可以在函數(shù)中使用關(guān)鍵字create temporary table直接創(chuàng)建即可。不過,需要注意的是,要加上if not exists限制,這樣在臨時表已經(jīng)存在的情況下,臨時表不會被再次創(chuàng)建,從而避免執(zhí)行異常。
江孜ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
示例函數(shù):
create or replace function ads.fn_create_tmp_tb (n integer, s character varying)returns voidas $$begin create local temporary table if not exists tmp_tb_01 (idx integer, user_name character varying); insert into tmp_tb_01 (idx, user_name) select n, s; raise notice '%', (select user_name from tmp_tb_01 where idx = n);end;$$ language plpgsql;示例調(diào)用:
select ads.fn_create_tmp_tb(1, 'Andy'); select ads.fn_create_tmp_tb(2, 'Jack');
CREATE GLOBAL TEMP TABLE tmp_report(user_code CHARACTER VARYING,customer_num INTEGER,visit_num INTEGER,visit_success_num INTEGER,visit_complete_rate TEXT,remain_task_num INTEGER, visit_renewals_num INTEGER) ON COMMIT DELETE;
我這個定義的是 on commit delete,要按照你的場景來,可以on commit drop等,一般我們用臨時表,都是事務(wù)級臨時表,用于臨時存儲寫變量或者集合數(shù)據(jù),主要用戶報表分析;
注,如果是在 function 中執(zhí)行這段代碼,建議使用 變量拼接,因為DDL有時候會有權(quán)限問題,如:
v_table_sql := 'CREATE GLOBAL TEMP TABLE tmp_report(user_code CHARACTER VARYING,customer_num INTEGER,visit_num INTEGER,visit_success_num INTEGER,visit_complete_rate TEXT,remain_task_num INTEGER,visit_renewals_num INTEGER) ON COMMIT DELETE';
EXECUTE v_table_sql; (v_table_sql為 聲明的變量)
1) 在catalog 的makefile 中添加相應(yīng)的系統(tǒng)表頭文件
./src/backend/catalog/Makefile:42: pg_foreign_table.h pg_partition_key.h \
2) 建表 -- 以pg_partition_key為例:
2.1)在include的 catalog目錄下添加這張表的定義
#ifndef PG_PARTITION_KEY_H
#define PG_PARTITION_KEY_H
#include 'catalog/genbki.h'
#define PartitionKeyRelationId 3180
CATALOG(pg_partition_key,3180) BKI_WITHOUT_OIDS
{
Oid pkrelid;
int16 pkattnum;
} FormData_pg_partition_key;
typedef FormData_pg_partition_key *Form_pg_partition_key;
#define Natts_pg_partition_key ?? 2
#define Anum_pg_partition_key_pkrelid ?? 1
#define Anum_pg_partition_key_pkattnum 2
#endif
2.2) 在catalog 的indexing.h 頭文件中添加系統(tǒng)表的唯一性索引
DECLARE_UNIQUE_INDEX(pg_partition_key_relid_index, 3181, on pg_partition_key using btree(pkrelid oid_ops));
#define PartitionKeyRelidIndexId 3181 r3) Syscache -- 以 pg_partion_key為例:
3.1)首先要在syscache.h中添加 SysCacheIdentifier
3.2) 要在syscache.c 的 cacheinfo[] 中添加這張表
cache的定義:
struct cachedesc
{
序列數(shù)可以增加postgresql數(shù)據(jù)表的檢索速度,同時降低數(shù)據(jù)查詢時的資源消耗。那么如何在postgresql中創(chuàng)建序列數(shù)并且應(yīng)用呢?下面我給大家分享一下。
工具/材料
pgAdmin4
創(chuàng)建序列數(shù)
首先打開pgAdmin4,展開postgresql數(shù)據(jù)庫,找到模式下面的public選項,如下圖所示
接下來在public下面右鍵單擊序列,然后點擊Create下面的sequence選項,如下圖所示
在彈出的創(chuàng)建Sequence界面中首先給序列數(shù)起一個名字,如下圖所示,注意都用英文
然后切換到Definition頁卡,定義一下序列的增加量,如下圖所示,其中maximum根據(jù)自己的需要進行設(shè)置
最后回到數(shù)據(jù)庫主界面,你會看到序列下面多出了一個項,這就是我們創(chuàng)建的序列數(shù)了,如下圖所示
在數(shù)據(jù)表中應(yīng)用序列數(shù)
首先選中一個數(shù)據(jù)表,點擊右側(cè)的編輯按鈕,如下圖所示
在彈出的編輯界面中切換到Columns頁卡,點擊ID簽名的編輯按鈕,如下圖所示
最后在字段的編輯界面中切換到Variables選項卡,然后在Value列中通過nextval函數(shù)帶入剛才定義的序列數(shù)即可,如下圖所示
創(chuàng)建表
[postgres@web1 data]$ psql -U zhongwc -d zwcdb -h 192.168.1.203 -p 1521
Password for user zhongwc:
psql (9.2.2)
Type "help" for help.
zwcdb= create table t_zhongwc(pid integer,pname varchar(32),constraint zhongwc_pid_pk primary key(pid));
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "zhongwc_pid_pk" for table "t_zhongwc"
CREATE TABLE
zwcdb=
zwcdb= select * from t_zhongwc;
pid | pname
-----+-------
(0 rows)
標題名稱:postgresql建表的簡單介紹
分享路徑:http://jinyejixie.com/article14/dsdjcde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、微信小程序、服務(wù)器托管、手機網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)