2015-12-11 94 views
0

這裏是我的問題:TRIGGERS插入同一臺 - PLSQL

我在同一個表

FINAL FORM

我改造這樣

INICIAL FORM

東西放到這個我嘗試過觸發器,但是我有變異的問題,我無法控制插入,但我需要爲每個r做這件事ow值大於1. 任何消耗?

回答

0

根據您正在尋找交易的數量,這可能不是一個可行的方法,但你可以嘗試的東西沿着這些路線:

CREATE OR REPLACE TRIGGER {TRIGGER NAME} 
BEFORE INSERT ON {TABLE HERE} 
FOR EACH ROW 
DECLARE 
    l_val INTEGER; 
BEGIN 
    l_val := :new.value - 1; 

    IF l_val > 0 THEN 
     :new.value := 1; 

     FOR i IN 1..l_val LOOP 
     INSERT INTO {TABLE HERE} 
     VALUES (:new.name, 1); 
     END LOOP; 
    END IF; 
END {TRIGGER NAME}; 
/
0

您需要使用視圖,而不是觸發。

  1. 創建表create table testing_trig (c char(1), i integer);
  2. 創建視圖create or replace view testing_trig_view as select * from testing_trig;
  3. 創建觸發
CREATE OR REPLACE TRIGGER testing_trg 
INSTEAD OF INSERT 
ON testing_trig_view 
BEGIN 
    FOR i IN 1 .. :NEW.i 
    LOOP 
    INSERT INTO testing_trig VALUES (:NEW.c, 1); 
    END LOOP; 
END; 
/
  • 插入到視圖insert into testing_trig_view values ('A', 3);
  • 驗證
  • SQL> select * from testing_trig; 
    
    C I 
    - ---------- 
    A 1 
    A 1 
    A 1