我试图更新几个表现有主键(1000班)。我知道我可以使用以下内容获取ID:
SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '$database' AND TABLE_NAME = '$table'
然后我可以像这样更新:
ALTER TABLE $table AUTO_INCREMENT = $old_ai_value+1000
但是有更好,更短的方式吗?我猜到了
ALTER TABLE $table AUTO_INCREMENT = AUTO_INCREMENT+1000
但这只会产生错误。
答案 0 :(得分:2)
您需要从PHP执行两个查询。首先使用您显示的AUTO_INCREMENT
查询获取旧的SELECT
值。在PHP中添加1000,然后将其用作ALTER TABLE
查询中的值。
您无法在SQL中完全执行此操作,因为AUTO_INCREMENT =
中的ALTER TABLE
参数未被计算为表达式,它必须是文字整数。
如果您尝试更新现有行的ID,而不是设置用于新行的ID,则可以执行以下操作:
UPDATE $table
SET id = id + 1000
但是,这也将更新自动增量,因此将来的行将获得1000以上的ID,他们不会填补空白。自动增量始终应该高于任何现有ID。