-- -- 出å“在庫明細 -- t_ex_stock_detail -- -- DROP TABLE t_ex_stock_detail; CREATE TABLE t_ex_stock_detail ( itemcd integer NOT NULL, -- PriKey structcd integer NOT NULL, -- PriKey stockcd integer NOT NULL, -- PriKey sellercd integer, -- ForKey stocktitlecd integer, -- ForKey exhibitcount integer, condition integer, sellingprice integer, souryouprc integer, stockstate integer, scdstartdate timestamp without time zone, scdcompdate timestamp without time zone, itemexp character varying(1024), rackid character varying(256), managecd character varying(256), costprice integer, ntcostprice integer, consignment integer, arrivaldate date, delflg boolean, adddate timestamp without time zone, upddate timestamp without time zone, updusrnm character varying(60), updpcnm character varying(60), updcnt integer, PRIMARY KEY(itemcd, structcd, stockcd) ); -- トリガー CREATE TRIGGER trigger_master_stamp BEFORE INSERT OR UPDATE ON t_ex_stock_detail FOR EACH ROW EXECUTE PROCEDURE g_master_stamp(); -- トリガー用関数: ex_stock_detail CREATE OR REPLACE FUNCTION g_ex_stock_detail() RETURNS "trigger" AS $BODY$ DECLARE itemstruct_rec RECORD; new_stockcd integer; BEGIN -- structCDã®ãƒã‚§ãƒƒã‚¯ IF NEW.itemcd IS NULL THEN RAISE EXCEPTION '引数 itemcd ã¯å¿…é ˆã§ã™'; END IF; IF NEW.structcd IS NULL THEN RAISE EXCEPTION '引数 structcd ã¯å¿…é ˆã§ã™'; END IF; SELECT INTO itemstruct_rec * FROM t_item_struct WHERE itemcd = NEW.itemcd AND structcd = NEW.structcd ; IF NOT FOUND THEN RAISE EXCEPTION '引数 itemcd % ã¨å¼•æ•° structcd % ã®ãƒ‡ãƒ¼ã‚¿ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“', NEW.itemcd, NEW.structcd; END IF; -- stockcdCDã®å–å¾— SELECT INTO new_stockcd MAX(stockcd) +1 FROM t_ex_stock_detail WHERE itemcd = NEW.itemcd AND structcd = NEW.structcd ; IF new_stockcd IS NULL THEN new_stockcd := 1; END IF; -- æ›´æ–° NEW.stockcd := new_stockcd; RETURN NEW; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- トリガ CREATE TRIGGER trigger_ex_stock_detail BEFORE INSERT ON t_ex_stock_detail FOR EACH ROW EXECUTE PROCEDURE g_ex_stock_detail(); -- トリガー用関数: ex_stock_detail -- å“ç›®åŸºæœ¬æƒ…å ±ã‚’æ›´æ–° CREATE OR REPLACE FUNCTION g_ex_stock_detail2() RETURNS "trigger" AS $BODY$ BEGIN -- æ›´æ–° IF NEW.delflg = FALSE THEN UPDATE t_item_basic_attr SET stock_upddate = NEW.upddate WHERE itemcd = NEW.itemcd; END IF; RETURN NULL; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- トリガ登録 CREATE TRIGGER trigger_ex_stock_detail2 AFTER INSERT OR UPDATE ON t_ex_stock_detail FOR EACH ROW EXECUTE PROCEDURE g_ex_stock_detail2(); -- トリガー用関数: ex_stock_detail -- å“ç›®åŸºæœ¬æƒ…å ±ã®æœ€ä½Žä¾¡æ ¼ã‚’æ›´æ–° -- DROP g_ex_stock_detail3(); CREATE OR REPLACE FUNCTION g_ex_stock_detail3() RETURNS "trigger" AS $BODY$ DECLARE _price integer; BEGIN -- æ›´æ–° IF NEW.itemcd IS NOT NULL THEN -- 全㦠SELECT * INTO _price FROM s_get_lowprice(1, NEW.itemcd); IF NOT FOUND THEN _price := NULL; END IF; UPDATE t_item_basic_attr SET lowprice = _price WHERE itemcd = NEW.itemcd; -- ä¸å¤ SELECT * INTO _price FROM s_get_lowprice(2, NEW.itemcd); IF NOT FOUND THEN _price := NULL; END IF; UPDATE t_item_basic_attr SET oldlowprice = _price WHERE itemcd = NEW.itemcd; -- æ–°å“ SELECT * INTO _price FROM s_get_lowprice(3, NEW.itemcd); IF NOT FOUND THEN _price := NULL; END IF; UPDATE t_item_basic_attr SET newlowprice = _price WHERE itemcd = NEW.itemcd; END IF; RETURN NULL; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- トリガ登録 CREATE TRIGGER trigger_ex_stock_detail3 AFTER INSERT OR UPDATE ON t_ex_stock_detail FOR EACH ROW EXECUTE PROCEDURE g_ex_stock_detail3();