1
제발 용서해주십시오. 영어 번역기를 사용하고 있습니다.
나는 summary
테이블을 가지고 있는데,이 테이블에 삽입하기 전에 트리거가 필요합니다. 예를 들어 summary
입니다. 원하는 것은 수신인이 기존 날짜와 일치하는지 확인해야하며, 테이블을 업데이트하고 들어오는 값을 추가해야합니다. 그냥 삽입해야 다른 값을 기존날짜가 일치하는 경우 업데이트하는 Mysql 트리거와 일치하는 항목이 없을 경우 삽입 이전에 삽입
`summary` +------+-------+-------------+------+ | date |income | expenditure | other| |22/17 | 200 | 50 | 30 | |22/17 | 100 | 10 | 80 | |23/17 | 50 | 100 | 0 | +------+-------+-------------+------+ `summary` // this is how i want it to be +------+-------+-------------+------+ | date |income | expenditure | other| |22/17 | 300 | 150 | 30 | |23/17 | 50 | 100 | 0 | +------+-------+-------------+------+
내 테이블 코드
CREATE TABLE `summary` ( `id_` int(11) NOT NULL, `date_` date NOT NULL, `income_` text NOT NULL, `expenditure_` text NOT NULL, `other_` text NOT NULL, PRIMARY KEY(id) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `summary` (`id_`, `date_`, `income_`, `expenditure_`, `other_`) VALUES (1, '2017-12-22', 200, 50, 30), (2, '2017-12-22', 100, 10, 80), (3, '2017-12-23', 50, 100, 0);
이것은 Novist
트리거 코드
DELIMITER $$ CREATE TRIGGER inc_trig BEFORE INSERT ON income_ FOR EaCH ROW BEGIN DECLARE income,expenditure,other INT; SET income=1; SET expenditure=2; SET other=3; IF(NEW.date_ != date_)THEN IF NEW.name_ = income THEN INSERT INTO summary (date_,income) VALUES (new.date_,new.amount); ELSEIF NEW.name_ = expenditure THEN INSERT INTO summary (date_,expenditure_) VALUES (new.date_,new.amount); ELSEIF NEW.name_ = other THEN INSERT INTO summary (date_,other_) VALUES (new.date_,new.amount); ELSE(new.date_ = date_)THEN IF NEW.name_ = income_ THEN UPDATE summary SET income_ = income_ + new.amount); ELSEIF NEW.name_ = expenditure THEN UPDATE summary SET expenditure_ = expenditure_ + new.amount); ELSEIF NEW.name_ = other THEN UPDATE summary SET other_ = other_ + new.amount); END IF; END $$
감사 오류 열을 알 수없는 열 수입에 삽입하려고하면 –
@ JoshuaSampson이 DDL을 다시 보았습니다. 확실하지 않은 이유로, 모든 컬럼 이름은'_'로 끝납니다. 그에 따라 내 대답을 편집했습니다. – Mureinik
내가하고있는 일을 업데이트하려고하는데, 모든 일을 짧게 만들었던 이유는 코드가 너무 길어서 내가 게시해야한다고 생각한다. –