【问题标题】:How can I insert different columns of two different tables from a single trigger?如何从单个触发器中插入两个不同表的不同列?
【发布时间】:2013-12-19 16:28:57
【问题描述】:

在oracle SQL中,我想使用单个触发器来更新表一中的两列(A,B)和表二的四列(A,B,C,D)。在两个表中插入的条件将保持不变(所以没有@987654323 @)。触发器将值插入到表项目中。我想在另一个表中插入值“PID”和“PAYMENTTERM”,比如说“temp_pay_term”。

抱歉,代码丢失。我总是不擅长格式化,因此我无法粘贴代码。但它看起来像下面 创建触发器
开始

选择计数(1) INTO varProjectExists 来自项目 WHERE ProjectUniversalID = varProject_ID; 如果 更新项目 否则插入项目

现在我想在另一个表中插入值 PID 和 paymentterm,比如 temp_pay_term

【问题讨论】:

  • 你为什么用mysql标记?那么只需在两个表中执行两次插入?您没有显示任何表架构、触发代码等。我们应该如何帮助您?
  • 你想用什么数据更新两张表?数据来自触发触发器的表?

标签: sql oracle oracle-sqldeveloper


【解决方案1】:

嗯,信息太少了,我无法猜测你需要什么extamante。

但遵循一个建议:

create table TABLE1(
  "ID1"     number not null
  , "A1" varchar(20)
  , "B1" varchar(20)
  , "C1" varchar(20)
  , "D1" varchar(20)
)
/
create or replace trigger TG_BIU_TABLE1
after insert or update on TABLE1
for each row
begin
  update TABLE2
  set A2 = :new.A1
      ,B2 = :new.B1
  where TABLE2.ID2 = :new.ID1;

  update TABLE3
  set A3 = :new.A1
      ,B3 = :new.B1
      ,C3 = :new.C1
      ,D3 = :new.D1
  where TABLE3.ID3 = :new.ID1;
end;
/
create table TABLE2(
  "ID2"     number not null
  , "A2" varchar(20)
  , "B2" varchar(20)
)
/
INSERT INTO TABLE2 (ID2, A2, B2) VALUES (1, 'AAA', 'BBB')
/
create table TABLE3(
  "ID3"     number not null
  , "A3" varchar(20)
  , "B3" varchar(20)
  , "C3" varchar(20)
  , "D3" varchar(20)
)
/
INSERT INTO TABLE3 (ID3, A3, B3, C3, D3) VALUES (1, 'AAA', 'BBB', 'CCC', 'DDD')
/

INSERT INTO TABLE1 (ID1, A1, B1, C1, D1) VALUES (1, 'AAA1', 'BBB1', 'CCC1', 'DDD1')
/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    相关资源
    最近更新 更多