2016-03-04 97 views
0
CREATE OR REPLACE FUNCTION insert_data_into_stock_ledger_for_opstock() 
    RETURNS trigger AS 
$BODY$ 
DECLARE 
    stocid integer; 
    rec1 record; 
BEGIN 
    FOR rec1 IN 
    select * from mas_stock 
    where stock_id = NEW.stock_id 
    LOOP 
     INSERT into stock_leger_head (tra_id,tra_type,date,dept_id,flag,item_id,qty) values (NEW.stock_id,'OS',NEW.created_datetime,NEW.dept_id,'I',rec1.item_id,rec1.qty) RETURNING stock_id INTO stocid; 
     /*IF rec1.model_no IS NULL OR rec1.model_no = '' 
     THEN 
      RETURN NEW; 
     ELSE*/ 
      INSERT into stock_leger_detail (stock_id,model_no,serial_batch,qty) values (stocid,rec1.model_no,rec1.serial_batch_no,rec1.qty); 
     /*END IF; */ 
    END LOOP; 
    RETURN NEW; 
END; 
$BODY$ 
    LANGUAGE plpgsql VOLATILE 
    COST 100; 
ALTER FUNCTION insert_data_into_stock_ledger_for_opstock() 
    OWNER TO postgres; 

這是我第一次使用觸發器我不知道什麼是錯誤的,甚至不插入任何錯誤時插入also.Data插入到mas_stock工作正常,但不觸發?此觸發器無法插入觸發器表中有什麼問題?

+1

請添加您使用的'create trigger'語句 –

+0

@a_horse_with_no_name謝謝。最後我做到了。:) –

回答

1

必須添加:

CREATE TRIGGER (TRIGGER_NAME) before delete on (NAME_TABLE) 
FOR EACH ROW EXECUTE PROCEDURE insert_data_into_stock_ledger_for_opstock(); 
1

CREATE TRIGGER insert_opening_stock INSERT後mas_stock FOR EACH ROW EXECUTE PROCEDURE insert_data_into_stock_ledger_for_opstock();