본문 바로가기
MySql

MySQL ALTER TABLE이있는 저장 프로 시저

by 베이스 공부 2020. 12. 2.
반응형

동일한 MySQL 서버의 다른 데이터베이스에있는 두 테이블간에 auto_increment 필드를 동기화해야합니다. 희망은 관리자의 권한으로 웹 사용자가 권한을 부여하지 않고 ALTER TABLE [db1]. [table] AUTO_INCREMENT = [num]; 을 실행할 수있는 저장 프로 시저를 만드는 것이 었습니다. SQL 주입).

내 문제는 저장 절차를 만들 때 오류가 발생한다는 것입니다. 이것이 MySQL에서 허용하지 않는 것입니까?

<코드> DROP PROCEDURE IF EXISTS sync_auto_increment;
CREATE PROCEDURE set_auto_increment (tableName VARCHAR(64), inc INT)
BEGIN
ALTER TABLE tableName AUTO_INCREMENT = inc;
END;

 

해결 방법

 

문제는 구분 기호를 변경해야한다는 것입니다. Alter table 줄이 함수의 끝이라고 생각합니다. 이 시도:

DROP PROCEDURE IF EXISTS sync_auto_increment;
DELIMITER //
CREATE PROCEDURE set_auto_increment (tableName VARCHAR(64), inc INT)
BEGIN
ALTER TABLE tableName AUTO_INCREMENT = inc;
END//

DELIMITER ;

때로는 mysql이 저장 프로 시저를 사용하도록 허용하는 것이 까다롭기 때문에 여전히 실행할 수없는 경우 시도해 볼 수 있습니다.

DROP PROCEDURE IF EXISTS sync_auto_increment;
DELIMITER //
CREATE PROCEDURE set_auto_increment (tableName VARCHAR(64), inc INT)
DETERMINISTIC
READS SQL DATA
BEGIN
ALTER TABLE tableName AUTO_INCREMENT = inc;
END//

DELIMITER ;

 

참조 페이지 https://stackoverflow.com/questions/2520310

 

 

반응형

댓글