나는 테이블 통화 lp_upload을 가지고 있고 그것은 자동차와 기타 관련 정보의 번호판 포함 : 교통 카메라에서MySQL의 트리거 기능
CREATE TABLE `lp_upload` (
`date` date NULL ,
`plate` char(10) NULL ,
`site` int NULL ,
`dateid` char(20) NULL
)
;
이 테이블지고 정보. 그러나 접시에 언젠가는 문자가 인식되지 않고 $로 대체됩니다. 따라서 접시가 실제로 abc123이지만 카메라가 c와 1을 인식하지 못하면 테이블에 들어가는 ac $$ 23이됩니다.
메신저 새 플레이트를 입력하고 글자 중 6 개가 기존 플레이트와 일치하면 해당 플레이트가됩니다. EX : 123 $ 5678를 입력하고 12345678은 이미 $ 5678 (123) 12345678
에 의해 대체 될 것이다 다음, 존재 그래서 내가 먼저 match 함수 작성 :
CREATE DEFINER = CURRENT_USER FUNCTION `matchingfun`(`str1` char(10),`str2` char(10))
RETURNS int
BEGIN
DECLARE myindex int DEFAULT 0;
DECLARE count int DEFAULT 0;
DECLARE maxlength int;
SET maxlength = length(str1);
for_loop: LOOP
SET myindex = myindex + 1;
IF maxlength < myindex then
RETURN 0;
END IF;
IF SUBSTRING(str1,myindex,1)= SUBSTRING(str2,myindex,1)then
SET count = count +1;
END IF;
IF count > 6 then
RETURN 1;
END IF;
IF SUBSTRING(str1,myindex,1)!= SUBSTRING(str2,myindex,1) and SUBSTRING(str1,myindex,1)!= '$' and SUBSTRING(str2,myindex,1)!= '$'then
RETRUN 0;
END IF;
END LOOP for_loop;
RETURN 0;
END
을 나는 테이블에 트리거 기능을 추가
CREATE TRIGGER `trigger1` AFTER INSERT ON `lpr_opt_upload`
BEGIN
declare old_site_id int;
declare old_text char(10);
select lpr_text into old_text from lpr_opt_upload where matchingfun(new.lpr_text, lpr_text) = 1;
if(old_text is not null) then
set new.lpr_text = old_text;
end if;
END
내가 이것을 실행할 때 데이터베이스가 충돌합니다. 이 문제를 해결하거나 더 나은 방법을 제안 할 수 있습니까? 감사.
'RETRUN 0;'에서 팁오 (이유가 아님) – Sebas
"데이터베이스 충돌"에 대해 자세히 설명해 주시겠습니까? "크래시"란 무엇을 의미합니까? 받은 오류 코드는 무엇입니까? –