Oracle更新了一个表,用于将数据输入到另一个表中

时间:2015-04-06 11:47:05

标签: sql oracle sql-update

场景很简单

CREATE TABLE one
(ID NUMBER CONSTRAINT
pk_id PRIMARY KEY,
Number_of_relations INTEGER)

CREATE TABLE two
(mock_id NUMBER,
CONSTRAINT fk_id FOREIGN KEY (mock_id) REFERENCES one(ID)
text VARCHAR)

每次在表2中输入新行时,都可以更新Number_of_relations。因此,如果我在表1中输入ID作为' 1',则在Number_of_relations为' 0'时,如果我添加(' 1',' ;你好')和(' 1',' helloagain')进入表二,现在id' 1'有两个文本,但我希望number_of_relations在表1中更新(如果可能的话自动)到' 2'。有可能吗?,提前谢谢。

1 个答案:

答案 0 :(得分:0)

此触发器执行此操作:

create or replace trigger ins_two after insert on two
for each row
  update one set number_of_relations = number_of_relations + 1
    where one.id = :new.mock_id

测试:

insert into two values (1, 'hello');
insert into two values (1, 'hello again');
insert into two values (2, 'hello');

select * from one

        ID NUMBER_OF_RELATIONS
---------- -------------------
         1                   2 
         2                   1

这是INSERT操作的示例,您还可以添加DELETE和UPDATE部分。 在" DELETE" case number_of_relations必须递减, 在" UPDATE" - 它取决于哪个列已更新,但逻辑类似。 Triggers文档和示例。