可以在函數中使用關鍵字create temporary table直接創建即可。不過,需要注意的是,要加上if not exists限制,這樣在臨時表已經存在的情況下,臨時表不會被再次創建,從而避免執行異常。
江孜ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創新互聯的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
示例函數:
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;示例調用:
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等,一般我們用臨時表,都是事務級臨時表,用于臨時存儲寫變量或者集合數據,主要用戶報表分析;
注,如果是在 function 中執行這段代碼,建議使用 變量拼接,因為DDL有時候會有權限問題,如:
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 中添加相應的系統表頭文件
./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 頭文件中添加系統表的唯一性索引
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
{
序列數可以增加postgresql數據表的檢索速度,同時降低數據查詢時的資源消耗。那么如何在postgresql中創建序列數并且應用呢?下面我給大家分享一下。
工具/材料
pgAdmin4
創建序列數
首先打開pgAdmin4,展開postgresql數據庫,找到模式下面的public選項,如下圖所示
接下來在public下面右鍵單擊序列,然后點擊Create下面的sequence選項,如下圖所示
在彈出的創建Sequence界面中首先給序列數起一個名字,如下圖所示,注意都用英文
然后切換到Definition頁卡,定義一下序列的增加量,如下圖所示,其中maximum根據自己的需要進行設置
最后回到數據庫主界面,你會看到序列下面多出了一個項,這就是我們創建的序列數了,如下圖所示
在數據表中應用序列數
首先選中一個數據表,點擊右側的編輯按鈕,如下圖所示
在彈出的編輯界面中切換到Columns頁卡,點擊ID簽名的編輯按鈕,如下圖所示
最后在字段的編輯界面中切換到Variables選項卡,然后在Value列中通過nextval函數帶入剛才定義的序列數即可,如下圖所示
創建表
[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://vcdvsql.cn/article14/dsdjcde.html
成都網站建設公司_創新互聯,為您提供企業建站、微信小程序、服務器托管、手機網站建設、自適應網站、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯