programing

실행 중인 합계로 자동 업데이트하려면 SQL 합계 테이블이 필요합니다.트리거를 사용해야 합니까 아니면 (php와) 병합해야 합니까?3개의 트리거를 1개로 결합하려면 어떻게 해야 합니까?

javamemo 2023. 10. 2. 10:48
반응형

실행 중인 합계로 자동 업데이트하려면 SQL 합계 테이블이 필요합니다.트리거를 사용해야 합니까 아니면 (php와) 병합해야 합니까?3개의 트리거를 1개로 결합하려면 어떻게 해야 합니까?

다음 세 가지 문장을 시도해 보았는데 어떻게 결합해야 할지 잘 모르겠습니다.

CREATE TRIGGER upd_totals 
AFTER INSERT ON pc12_status 
FOR EACH ROW
INSERT INTO total_hrs (acft_hrs, date_flight, acft_tail)
SELECT hrs_end, flight_date, tail_no FROM acft_status
INNER JOIN total_hours ON acft_status.tail_no = total_hrs.acft_tail;

&

CREATE TRIGGER total_calc_prop
AFTER INSERT ON total_hrs
FOR EACH ROW
UPDATE total_hrs SET prop_hrs = (SELECT s.flight_date, s.tail_no, s.flight_hrs
SUM(s.flight_hrs) OVER (PARTITION BY s.tail_no) AS prop_hrs 
FROM acft_status s);

&

CREATE TRIGGER total_calc_eng
AFTER INSERT ON total_hrs
FOR EACH ROW
UPDATE total_hrs SET engine_hrs = (SELECT s.flight_date, s.tail_no, s.flight_hrs
SUM(s.flight_hrs) OVER (PARTITION BY s.tail_no) AS engine_hrs 
FROM acft_status s); 

나는 데이터가 있는 아래 두 개의 표를 가지고 있습니다.

격식을 차

 flight_date  flight_hrs  tail_no  hrs_end  hrs_start 

 2017-12-31      100.0      1378     100.0     0.0    

총_시간

 date _flight  acft_tail  acft_hrs  engine_hrs  prop_hrs 

 2017-12-31      1378      100.0       98.5       96.5   

aft_status 테이블에 데이터를 추가할 때마다 aft_hrs 필드에 hrs_end를 복사하는 동안 engine_hrs 및 prop_hrs 필드의 이전 항목을 자동으로 합산해야 합니다.

INSERT INTO acft_status (flight_date, flight_hrs, tail_no, hrs_end, hrs start) 
VALUES ("2018-01-01", 1.3, 1378, 101.3, 100.0);

그런 다음 total_hrs를 다음으로 업데이트합니다.

총_시간

 date _flight  acft_tail  acft_hrs  engine_hrs  prop_hrs 

 2017-12-31      1378      100.0       98.5       96.5   

 2017-12-31      1378      101.3       99.8       97.8   

세 개의 트리거를 모두 실행하려고 하면 "이 저장된 기능/트리거를 호출한 문에서 이미 사용하고 있으므로 저장된 기능/트리거에서 테이블 'total_hrs'를 업데이트할 수 없습니다"라는 메시지가 표시됩니다.

저는 마리아DB 10.2를 실행하고 있습니다.FOLLOW그리고.PROCEED트리거에 추가됩니다.하나의 이벤트에서 여러 트리거를 실행할 수 있습니다.

트리거가 가장 효율적인 방법입니까?그렇다면 자동으로 실행되도록 하려면 어떻게 결합해야 합니까?해볼까요?MERGE대신에 php를 사용하여 쿼리에서 트리거합니다???

언급URL : https://stackoverflow.com/questions/49472685/i-need-a-sql-totals-table-to-update-automatically-with-running-totals-should-i

반응형