programing

업데이트된 열 값을 수동으로 수정할 때 HeidiSQL Before Update 트리거 오류 발생

nicescript 2022. 9. 30. 11:53
반응형

업데이트된 열 값을 수동으로 수정할 때 HeidiSQL Before Update 트리거 오류 발생

BEGIN
    SET NEW.value_result = NEW.value_a + NEW.value_b;
END

value_result 열을 수동으로 수정하면 다음과 같은 오류가 표시되는 이유를 이해하려고 합니다.

MariaDB: 오류 0 행이 1이어야 하는데 업데이트되었습니다.

value_a 또는 value_b 열을 수동으로 수정하면 문제가 없고 value_result 열이 완벽하게 업데이트됩니다.그러나 "사고"로 value_result 열을 수정하면 오류가 표시됩니다.

이것을 막을 수 있을까요?수동이란 쿼리 코드가 아닌 HeidiSQL 인터페이스를 사용하는 것을 의미합니다.

모든 열은 INT(11)입니다.

MySQL 및 MariaDB는 값이 변경된 행만 업데이트합니다.다음은 db <>fiddle의 예입니다.

이것이 당신이 보고 있는 문제라고 생각합니다.

필요한 경우:

update t
    set value_a = 123
    where id = ?;

그러면 (아마도) 둘 다value_a그리고.value_result바꾸다.행이 갱신됩니다.

필요한 경우:

update t
    set value_result = 123
    where id = ?;

그러면 트리거가 재설정됩니다.value_result행은 변경되지 않습니다.

참고: 트리거에 값을 설정하는 것보다 계산된 열을 사용하는 것이 더 나을 것 같습니다.

alter table t add value_result int as (value_a + value_b);

데이터베이스는 사용자가 계산된 열에 값을 할당할 수도 없도록 해야 하며, 값은 항상 정확합니다.

언급URL : https://stackoverflow.com/questions/65862077/heidisql-before-update-trigger-error-when-manually-modifying-updated-column-valu

반응형