A表
欄位一 欄位二 欄位三
Q W 0
E R 0
B表
欄位四 欄位五 欄位六
A C 0
G H 0
當把表A中欄位三更新為1,表內容顯示如下:
A表
欄位一 欄位二 欄位三
Q W 1
E R 1
B表
欄位四 欄位五 欄位六
A C 0
G H 0
A C 1
G H 1
求大神幫忙。
uj5u.com熱心網友回復:
SQL>
SQL> create table a(c1 varchar(10), c2 varchar(10), c3 int);
Table created
SQL> create table b(c1 varchar(10), c2 varchar(10), c3 int);
Table created
SQL> create trigger tri_a_up
2 before update on a
3 for each row
4 begin
5 insert into b values(:new.c1, :new.c2, :new.c3);
6 end;
7 /
Trigger created
SQL> insert into a values('A','B',0);
1 row inserted
SQL> insert into a values('C','D',0);
1 row inserted
SQL> update a set c3 = 1 ;
2 rows updated
SQL> select * from b;
C1 C2 C3
---------- ---------- ---------------------------------------
A B 1
C D 1
SQL> drop table a purge;
Table dropped
SQL> drop table b purge;
Table dropped
SQL>
uj5u.com熱心網友回復:
親,你這個貌似和我說的內容有點出入啊uj5u.com熱心網友回復:
肯定有出入,我只是給你提供示例代碼,具體的業務規則,你要自己組織;
uj5u.com熱心網友回復:
我的意思是說你寫的這個,得到的結果也不是我說的這個樣子啊,和我說的不是一個意思uj5u.com熱心網友回復:
----建立這個觸發器就能滿足你的需求
create or replace trigger trig_T
before update on A表
for each row
begin
if :New.欄位三 = 1 then
insert into B表
select 欄位四, 欄位五, 1 from B表 t where t.欄位六 = 0;
end if;
end;
uj5u.com熱心網友回復:
----建立這個觸發器就能滿足你的需求
create or replace trigger trig_T
before update on A表
for each row
begin
if :New.欄位三 = 1 then
insert into B表
select 欄位四, 欄位五, 1 from B表 t where t.欄位六 = 0;
end if;
end;
uj5u.com熱心網友回復:
說一下你的目的,更新一行資料,寫幾行,更新兩行寫幾行,另外這兩張表有什么關聯關系;
PS:他人回復了你的貼子,如果還想追上問,你最好參考 或 @ 一下,這樣系統會通知對方;
uj5u.com熱心網友回復:
CREAT OR REPLACE TRIGGER TRIG_I
BEFORE UPDATE ON 表A
DECLARE IVSN NUMBER;
BEGIN
SELECT DISTINCT 欄位六 INTO IVSN FROM 表B;
IF NEW.欄位三NOT IN IVSN THEN
INSERT INTO 表B
SELECT 欄位四,欄位五,MAX(欄位六)+1 AS 欄位六
FROM 表B
GROUP BY 欄位四,欄位五;
END IF;
END;
這么寫有問題,麻煩告訴我問題在哪里,初學者實在太笨了。
uj5u.com熱心網友回復:
@賣水果的net 不知道怎么用書面語來描述,我覺得好無奈啊轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/107645.html
標籤:基礎和管理
