source

트리거를 만들어야 해요 제가 문제가 있어요

ittop 2023. 10. 4. 22:57
반응형

트리거를 만들어야 해요 제가 문제가 있어요

트리거를 만들어야 하는데 문제가 있습니다.

CREATE TABLE `fotos` 
(
  `id` int(11) NOT NULL,
  `foto_patch` varchar(255) NOT NULL,
  `laudo_id` int(11) NOT NULL,
  `check_list_foto_id` int(11) NOT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  `deleted_at` datetime DEFAULT NULL
)

DELIMITER $$
CREATE TRIGGER `repetidos2` BEFORE INSERT ON `tb_cautelar_fotos` FOR EACH ROW BEGIN
        IF NEW.laudo_id =(
        SELECT
            laudo_id
        FROM
            `tb_cautelar_fotos`
        WHERE
            laudo_id = NEW.laudo_id
    ) THEN SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT
    = 'existe';
    END IF ;
END
$$
DELIMITER ;

지금까지는 모든 것이 올바르게 작동하고, 제가 요청하는 것을 존중하지만, 두 번째 옵션을 가지기 위해서는 이 트리거가 필요합니다.

laudo_id 와 check_list_foto_id 가 존재하면 메시지가 표시됩니다.

왜 나는 하나만 가질 수 있습니까?chck_list_foto_id위해서laudo_id?

나는 다음을 시도했습니다.

BEGIN
    IF (NEW.laudo_id AND new.check_list_foto_id ) = (
        SELECT
            laudo_id, check_list_foto_id
        FROM
            `tb_cautelar_fotos`
        WHERE
            laudo_id = NEW.laudo_id and check_list_foto_id = NEW.check_list_foto_id
    ) THEN SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT
        = 'existe';
    END IF ;
END

삽입 시 다음과 같은 오류가 발생합니다.

#4078 - '=' 연산에 대한 잘못된 매개 변수 데이터 유형 부울 및 행

언급URL : https://stackoverflow.com/questions/76295746/i-need-to-create-a-trigger-im-having-trouble-mariadb

반응형