반응형
업데이트된 열 값을 수동으로 수정할 때 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
반응형
'programing' 카테고리의 다른 글
뷰 라우터를 통해 로드된 컴포넌트에 Vue.js 스코프 스타일을 적용하는 방법 (0) | 2022.09.30 |
---|---|
문자열에서 선두 문자를 제거하려면 어떻게 해야 합니까? (0) | 2022.09.30 |
MariaDB SELECT가 다른 트랜잭션이 완료될 때까지 대기하도록 합니다. (0) | 2022.09.28 |
python 예외 메시지 캡처 (0) | 2022.09.28 |
Python json.loads에 ValueError: 추가 데이터가 표시됩니다. (0) | 2022.09.28 |