2016年5月4日 星期三

SQL 暫存表 TEMP | UNLOGGED TABLE

SQL 中,有暫存表的機制,該暫存表以三種方式存在
  1.  斷開連接後 (也就是離開SQL Command,非SQL Server關機,不同連接不能共用,推測可能是存在本地記憶體中)
  2. 下完指令後 (一次性)
  3. 僅不記錄為日誌檔案 (不會在會話結束,或是關機後刪除)
第一種的指令是:

CREATE TEMP TABLE test(A INT NOT NULL);
INSERT INTO test VALUES(1);
SELECT * FROM test;

這裡的表都不會列在連接軟體之中!


第二種的指令是:
CREATE TEMP TABLE test(A INT NOT NULL) ON COMMIT DROP;
INSERT INTO test VALUES(1);
SELECT * FROM test;

這個 ON COMMIT DROP 會在這個指令結束後就會消失!

第三種的指令是:
CREATE UNLOGGED TABLE test(A INT NOT NULL);
INSERT INTO test VALUES(1);
INSERT INTO test VALUES(1);
INSERT INTO test VALUES(1);
SELECT * FROM test;
這個指令在發生錯誤或是交易未完成情況下不會做任何備份之類的事!

Reference:
http://www.postgresql.org/docs/9.1/static/sql-createtable.html#AEN67445

沒有留言:

張貼留言

© Mac Taylor, 歡迎自由轉貼。
Background Email Pattern by Toby Elliott
Since 2014