实现数据仓库的upsert

王朝other·作者佚名  2008-05-19
宽屏版  字体: |||超大  

Upsert是指由INSERT和UPDATE语句功能组合成的单个子句。Upsert模型在数据仓库中尤其有用,在数据仓库中我们需要下面的

我们经常需要多个INSERT和SELECT(IAS)语句共同使用,这个时候upsert就非常有用。这是因为upsert不需要每次一行地处理数据,它能够将整个事务作为一个单一的集合来处理。

下面让我们用一个例子来说明upsert。假设我们需要一个NEW_CUSTOMERS表并将其数据放到另外两个表中。RICH_CUSTOMERS表由NEW_CUSTOMERS表中credit_limit 100000的那些客户的数据组成,而CUSTOMER表则由所有余下客户的数据组成。

在Oracle8i中,这个操作需要两个语句:

INSERT INTO

rich_customers

(cust_id,cust_credit_limit)

SELECT cust_id, cust_credit_limit

FROM new_customers

WHERE credit_limit =100000;

INSERT INTO customers SELECT * FROM new_customers;

在Oracle9i中,upsert只要用一条语句就可以实现这个要求:

INSERT

FIRST WHEN

credit_limit =100000

THEN INTO

rich_customers

VALUES(cust_id,cust_credit_limit)

INTO customers

ELSE

INTO customers SELECT * FROM new_customers;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有