[英]Using variable in setting mysql INNODB AUTO_INCREMENT table value
我嘗試將auto_increment值(重新)設置為變量的值,但失敗:
CREATE TABLE test_table (
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1;
SET @tmpvar = 12345;
ALTER TABLE test_table AUTO_INCREMENT=@tmpvar;
最后一條命令失敗,並顯示:
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 '@tmpvar' at line 1
這樣不能設置AUTO_INCREMENT值嗎? 有哪些選擇? 我需要在旋轉日志表的存儲過程中設置此值,並且我需要新表才能從某些舊表中獲取值。
附錄
用正確的自動增量初始值直接創建表也將失敗:
CREATE TABLE test_table (
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=@tmpvar;
PS我在So上找到了一個相關的問題,但沒有答案: 更新InnoDB表中的auto_increment值
編輯糾正了缺少的分號
嘗試:
CREATE TABLE `test_table` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1;
SET @`tmpvar` := 12345;
SET @`stmt_alter` := CONCAT('ALTER TABLE `test_table` AUTO_INCREMENT = ', @`tmpvar`);
PREPARE `stmt` FROM @`stmt_alter`;
EXECUTE `stmt`;
DEALLOCATE PREPARE `stmt`;
UPDATE
您可以對13.1.14 CREATE TABLE語法的預 准備語句使用13.5 SQL 語法 。
SET @`tmpvar` := 12345;
SET @`stmt_create` := CONCAT('CREATE TABLE `test_table` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=', @`tmpvar`);
PREPARE `stmt` FROM @`stmt_create`;
EXECUTE `stmt`;
DEALLOCATE PREPARE `stmt`;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.