오류 1064 (42000) : MySQL 서버 버전에 해당하는 설명서에서 'END'근처에서 사용할 올바른 구문을 확인하십시오.

무 쿤드

여기 mycode입니다

감사 테이블이라는 변경 추적자 테이블에 제품 테이블이라고 테이블에 삽입 한 후 트리거를 만들려고합니다.

이렇게

    DELIMITER //
    CREATE TRIGGER product_table_after_insert
    AFTER INSERT
    ON product_table FOR EACH ROW

   BEGIN

    DECLARE l_product_description varchar(500);
    DECLARE l_product_number int;
   set @l_table_name = 'product_table';
    set @l_action = 'INSERT';
   set  @l_table_column = 'all columns';
   set   @l_description = 'new row inserted';

    select p.product_description ,p.product_number into @l_product_description, @l_product_number from product_table p where p.product_description = (select max(pg.product_number)from product_table pg);
   -- Insert record into audit table
       INSERT INTO audit_table_test
     ( table_name,
     changed_row_id,
     action,
     table_column,
     change_desciption,
     change_time
     )
     VALUES
     ( l_table_name,
      l_product_number,
      l_action,
      l_table_column,
      l_description,
       SYSDATE()
       )
   END
   //
    DELIMITER ;

이것은 내가 얻는 오류입니다.

나는이 모든 방법을 시도했다

사용 |, S등 대신 // 및

삭제 ;배치 종료 후 //또는 \또는 $$함께 최종 이하

아무것도 작동하지 않습니다. 누군가 나를 도와주세요.

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 32

누군가 나를 도와주세요

무 쿤드

@juergen이 주석으로 제공 한 솔루션은 잘 작동합니다. 즉 , 삽입 문 뒤에 추가 ;(END 앞에) 실수를 찾아 주셔서 감사합니다. 나는 약 4 시간 동안 그것을 찾고 있었기 때문에 대답은 여기에있다 :

DELIMITER //
CREATE TRIGGER product_table_after_insert
    AFTER INSERT
    ON product_table
    FOR EACH ROW

  BEGIN

    DECLARE l_product_description varchar(500);
    DECLARE l_product_number int;
    set @l_table_name = 'product_table';
    set @l_action = 'INSERT';
    set @l_table_column = 'all columns';
    set @l_description = 'new row inserted';

    select p.product_description ,p.product_number
      into @l_product_description, @l_product_number
      from product_table p
      where p.product_description =
        (select max(pg.product_number)
          from product_table pg);
    -- Insert record into audit table
    INSERT INTO audit_table_test
        ( table_name,
          changed_row_id,
          action,
          table_column,
          change_desciption,
          change_time
        )
      VALUES
        ( l_table_name,
          l_product_number,
          l_action,
          l_table_column,
          l_description,
          SYSDATE()
        );  //<<---- Semicolon needed to be here
  END
  //
DELIMITER;

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관