2013-07-26 3 views
0

나는 today_plan과 kiln_master 테이블을 2 개 가지고 있습니다.업데이트 후 mysql TRIGGER 업데이트 필드

패턴 후

하고 today_plan 삽입 ITEMNO는 kiln_master 테이블 yeild 일치 선택 today_planyeild 필드에이 값을 갱신 할 필요가있다.

나는 트리거를 만든

CREATE TRIGGER update_yeild AFTER INSERT ON today_plan 
FOR EACH ROW UPDATE today_plan 
    SET yeild= (SELECT kiln_master.yeild from kiln_master,today_plan WHERE today_plan.itemno = kiln_master.item AND today_plan.pattern = kiln_master.pattern) WHERE itemno=new.itemno AND pattern=new.pattern 

내 코드

DROP TABLE IF EXISTS decsys.today_plan; 
CREATE TABLE `today_plan` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `belt` varchar(25) NOT NULL, 
    `distant` varchar(25) NOT NULL, 
    `pjtno` varchar(15) DEFAULT NULL, 
    `pattern` varchar(25) NOT NULL, 
    `itemno` varchar(25) NOT NULL, 
    `pro_qty` varchar(25) NOT NULL, 
    `act_qty` varchar(25) NOT NULL, 
    `yeild` varchar(25) NOT NULL, 
    `remark` varchar(100) NOT NULL, 
    `shipment` varchar(15) NOT NULL, 
    `temp` varchar(15) NOT NULL, 
    `fire_date` date NOT NULL, 
    `kiln` varchar(10) DEFAULT NULL, 
    `kiln_plan` varchar(15) NOT NULL, 
    `kiln_act` varchar(15) NOT NULL, 
    `ins_date` date NOT NULL, 
    `ins_act` varchar(15) NOT NULL, 
    `plandate` date NOT NULL, 
    `ship_date` date NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=31 DEFAULT CHARSET=utf8; 

today_plan kiln_master

DROP TABLE IF EXISTS decsys.kiln_master; 
CREATE TABLE `kiln_master` (
    `kid` int(7) NOT NULL, 
    `pattern` varchar(30) NOT NULL, 
    `item` varchar(30) NOT NULL, 
    `yeild` double NOT NULL, 
    `temp` int(6) NOT NULL, 
    `kiln` varchar(10) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 
에 어떤 문제가 있는지 부분

오류

#1442 - Can't update table 'today_plan' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. 

, 전에 그래서이 삽입됩니다 그렇게하는 것이 더

답변

1
당신은 그것을 삽입 한 후 행을 업데이트하려는

하지 대단히 감사합니다 올바른 값? 그건 뭔가 같을거야.

CREATE TRIGGER update_yeild BEFORE INSERT ON today_plan 
FOR EACH ROW 
    SET NEW.yeild = COALESCE((SELECT kiln_master.yeild 
        FROM kiln_master 
        WHERE NEW.itemno = kiln_master.item 
        AND NEW.pattern = kiln_master.pattern 
        LIMIT 1), 0); 
+0

친애하는 요아킴 이삭손. 너는 내 하루를 구했다 ... – 9pixle

관련 문제