【问题标题】:How can I update and replicate one column from one table to another column from another table?如何将一个表中的一列更新并复制到另一表中的另一列?
【发布时间】:2015-02-26 21:47:31
【问题描述】:

我需要将一个表 (CUTOMER) 中的一列 (TYPE) 从表 (ORDERS) 复制到另一列 (UNDEF000),每次有人更新列时 (TYPE) ) 自动复制到 (UNDEF000) 上,表 CUSTOMERORDERS 按列链接 (PRE_ORDERCODE)。

首先我尝试从TYPE 填充UNDEF000

UPDATE ORDERS 
JOIN CUSTOMER
SET ORDERS.UNDEF000=CUSTOMER.TYPE
WHERE ORDERS.PRE_ORDERCODE= CUSTOMER.PRE_ORDERCODE; 

没有功能:(

UPDATE ORDERS
SET ORDERS.UNDEF000= CUSTOMER.TYPE
FROM CUSTOMER CUSTOMER
INNER JOIN ORDERS ORDERS
ON CUSTOMER.PRE_ORDERCODE= ORDERS.PRE_ORDERCODE

你能帮我解决这两个问题吗?

【问题讨论】:

标签: sql oracle jobs procedures replicate


【解决方案1】:

我认为你的更新应该是这样的:

UPDATE ORDERS O SET O.UNDEF000= (
SELECT CUSTOMER.TYPE FROM CUSTOMER 
WHERE CUSTOMER.PRE_ORDERCODE = O.PRE_ORDERCODE); 

触发码:

create or replace trigger after_update_customer after update on
customer for each row
declare

begin
update orders set UNDEF000 = :new.type 
where pre_ordercode = :new.pre_ordercode;
end;

【讨论】:

  • 是 DISTINCT 的功能,因为我在 CUSTOMER 中的记录比 ORDERS 多,非常感谢 UPDATE ORDERS O SET O.UNDEF000= ( SELECT DISTINCT CUSTOMER.TYPE FROM CUSTOMER WHERE CUSTOMER.PRE_ORDERCODE= CUSTOMER.PRE_ORDERCODE ) 非常感谢阿拉米洛
  • 现在我必须创建一个触发器或程序吗?为了在有人从 CUSTOMER 更新 TYPE 后获得相同的数据?谢谢
  • 是的,您需要一个触发器。看看here
  • 再次非常感谢您,每次我在特定行上更新 TYPE 时,此触发器都会更新来自 UNDEF000 的所有数据,请您帮忙:(
  • 嗨,你是对的,我忘了把条件放在哪里。 :)
猜你喜欢
  • 2019-01-26
  • 2020-09-15
  • 1970-01-01
  • 2017-11-02
  • 2022-01-23
  • 2011-04-18
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多