programing

MySQL 트리거 행 필드가 존재하는지 확인

closeapi 2023. 11. 2. 21:44
반응형

MySQL 트리거 행 필드가 존재하는지 확인

다음과 같이 테이블에 트리거를 만들었습니다.

delimiter //
CREATE TRIGGER tb_ins BEFORE UPDATE ON tb
FOR EACH ROW
BEGIN
    IF (NEW.size <> size) THEN

    END IF;
END;//

문제는 다음 이외의 필드를 개별적으로 업데이트하는 것입니다.size해당 필드를 찾을 수 없다는 오류가 나타납니다.

예를 들어 다음과 같습니다.

UPDATE tb SET color = 'red' WHERE id = 1;

업데이트에 다음 필드가 포함되어 있지 않아 필드를 찾을 수 없다는 오류가 나타납니다.size트리거가 필요로 하는 필드입니다.

특정한 것이 있는지 확인할 방법이 있는지 알아야 합니다.ROW필드는 내 트리거 함수에 존재합니다.이것은 어떻게 이루어 질 수 있습니까?

나는 다음과 같은 것이 필요합니다.

IF EXISTS(ROW.size) THEN

END IF;

이 오류는 UPDATE 문에 참조된 열과 관련이 없습니다.

가장 큰 문제는 다음과 같은 부적격한 언급입니다.size방아쇠 몸체에.다음에 할당된 값의 변경을 감지하려는 경우size, 우리는 다음의 가치를 비교해야 합니다.NEW.size로.OLD.size.


DELIMITER $$

DROP TRIGGER IF EXISTS tb_ins $$

CREATE TRIGGER tb_ins 
BEFORE UPDATE ON tb
FOR EACH ROW
BEGIN
   IF NOT (NEW.size <=> OLD.size) THEN
      -- value of size column has been modified
      BEGIN END;
   END IF;
END$$

그 사이에 아무 것도 없는 것은 타당하지 않습니다.THEN그리고.END IF. 우리는 거기에 뭔가를 가지고 있어야 합니다.MySQL은 비어 있음을 허용합니다.BEGIN END;우리가 그걸 노옵으로 사용할 수 있게 차단하는 겁니다.

무엇을 달성하려고 하는지 명확하지 않습니다.

언급URL : https://stackoverflow.com/questions/44191940/mysql-trigger-check-if-row-field-exists

반응형