场景很简单
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'。有可能吗?,提前谢谢。
答案 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文档和示例。