搜尋此網誌

2015年7月30日 星期四

替查詢資料表建立別名


在 Oracle資料庫下,以A帳號登入所建立的資料表(如 customer),B帳號想存取該資料表,必須有存取該資料表的權限之外,在沒有額外設定下,資料表名稱為〔帳號.資料表名稱(如A.customer)〕,但透過 SYNONYM,資料表名稱可改為 customer。

使用 CREATE SYNONYM創建一個別名,which is an alternative name for a table,view...,但使用 CREATE SYNONYM的前提是具有使用該指令的權限

CREATE SYNONYM pay.payrec_pms FOR paysys.payrec_pms;

GRANT INSERT, delete, update, select ON  paysys.payrec_pms TO pay WITH GRANT OPTION;

DROP SYNONYM pay.payrec_pms;


2015年7月12日 星期日

用其它的 Table 來更新資料(Update From table)

pl-sql

UPDATE table1 a
SET table1_column = (SELECT table2_column
FROM table2
WHERE ID = a.ID)

如果雙方均有KEY值,使用下面這個方法會超快

UPDATE (
  SELECT PAYCDL.ID_NO, PAYCDL.DATE_ADD DATE_ADD_OLD,PAYCDL.DATE_LAST_MAINT DATE_LAST_MAINT_OLD,
               EXSCCS_PMS2.DATE_ADD DATE_ADD_NEW, EXSCCS_PMS2.DATE_LAST_MAINT DATE_LAST_MAINT_NEW
          FROM PAYCDL,
               EXSCCS_PMS2
         WHERE PAYCDL.ID_NO = EXSCCS_PMS2.ID_NO)
   SET DATE_ADD_OLD = DATE_ADD_NEW,
       DATE_LAST_MAINT_OLD = DATE_LAST_MAINT_NEW

-----------------------------------
ms-sql

UPDATE table1
      SET table1.col = table2.col1
FROM table2 WHERE table2.oldCol = table1.col