mysql重置所有表自增id

2021-10-23 01:36:35 字數 1360 閱讀 8483

-- 建立儲存過程之前需判斷該儲存過程是否已存在,若存在則刪除

drop

procedure

ifexists init_sql_string;

-- 建立儲存過程

create

procedure init_sql_string(

)begin

-- 定義變數

declare s int

default0;

declare sql_string varchar

(256);

-- 定義游標,並將sql結果集賦值到游標中

declare report cursor

for-- 查詢出所有表名

select

concat(

'alter table '

, table_name,

' auto_increment = 1;'

)as sql_string

from

information_schema.

tables

where

table_schema =

'jdym'

;-- 宣告當游標遍歷完後將標誌變數置成某個值

declare

continue

handler

fornot found set s=1;

-- 開啟游標

open report;

-- 將游標中的值賦值給變數,注意:變數名不要和返回的列名同名,變數順序要和sql結果列的順序一致

fetch report into sql_string;

-- 當s不等於1,也就是未遍歷完時,會一直迴圈

while s <>1do

-- 執行業務邏輯

-- 為需要拼接的變數賦值

set@run

= sql_string;

-- 預處理拼接好的字串

prepare sqlstr1 from

@run

;-- 執行拼接好的字串語句

execute sqlstr1;

-- 釋放拼接的字串語句

deallocate

prepare sqlstr1;

-- 將游標中的值再賦值給變數,供下次迴圈使用

fetch report into sql_string;

-- 當s等於1時表明遍歷以完成,退出迴圈

endwhile

;-- 關閉游標

close report;

end;

-- 執行儲存過程

call init_sql_string(

)

mysql自增id重置

參考 使用truncate truncate table 說明 使用truncate會刪除表的資料釋放空間,並且重置字自增id,但不會刪除表的定義。用處 需要清空表的時候才能使用。使用修改標識 dbcc checkident table name reseed,new reseed value 說明...

sql 自增ID之重置

問題背景 在使用資料庫時,經常要使用主鍵,並設定其為自增欄位,我使用的初衷是想要資料庫自動給我分配乙個空閒的id給我使用,但是使用後發現,如果我們刪除資料後,後面新增的資料的自增id始終是在之前的基礎上開始的,我想要的自增欄位始終從1開始。在多次插入資料後,自增的id號比較混亂,而且刪除資料後,自增...

關於mysql自增id的獲取和重置

使用max函式 select max id from tablename 優點 使用方便快捷。缺點 獲取的不是真正的自增id,是表中最大的id,如果有刪除資料的話,那麼該值和自增id相差比較大。如果有連表資料,有可能導致資料錯亂。使用last insert id函式 select last inse...