[英]MySQL does not accept this procedure. Can you help, please?
CREATE PROCEDURE reset_xyz_autoincrement
BEGIN
SELECT @max := MAX(ID)+ 1 FROM ABC;
PREPARE stmt FROM 'ALTER TABLE XYZ AUTO_INCREMENT = ?'
EXECUTE stmt USING @max
DEALLOCATE PREPARE stmt;
END $$
我從這里獲取代碼: 如何使用另一個表中的MAX值重置MySQL AutoIncrement?
這是MySQL的輸出:
#1064 - 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 'BEGIN
SELECT @max := MAX(ID)+ 1 FROM ABC' at line 2
嘗試這個
CREATE PROCEDURE reset_xyz_autoincrement
(username varchar(64),password varchar(64)) // here you use your columns
BEGIN
編輯:
嘗試這個
DROP PROCEDURE IF EXISTS reset_xyz_autoincrement;
CREATE PROCEDURE reset_xyz_autoincrement (userid INT)
BEGIN
你應該遵循:
分隔符$$
CREATE PROCEDURE reset_xyz_autoincrement()BEGINSELECT @max:=MAX(ID)+ 1 FROM Company_Master; PREPARE stmt FROM 'ALTER TABLE Dept_Master AUTO_INCREMENT = ?'; EXECUTE stmt USING @max ; DEALLOCATE PREPARE stmt; END$$
嘗試在CREATE PROCEDURE
語句之前添加delimiter $$
。
編輯:
我在關於過程的當前版本的注釋中丟失了跟蹤,但是在SELECT
語句中存在錯誤:
SELECT @yourVar := MAX(ID)+ 1 FROM ABC;
應該成為
SELECT MAX(ID) + 1 INTO @yourVar FROM ABC;
另外,我認為您之前應該DECLARE myVar INT
(假設它是一個整數),請注意max
也是一個MySQL關鍵字,所以我會避免在我的程序中使用該名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.