-- 建立儲存過程之前需判斷該儲存過程是否已存在,若存在則刪除
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...