Mysql動態sql語句,用當前時間做表名


  在mysql備份操作中, 我們可能要使用表名和當前時間來做為備份表的名稱,但是MySQL在存儲過程中不支持使用變量名來做表名或者列名。

  例如:有一個表”user“,我需要備份一份,並且表名為“user_2017_02_21“。

 

  在MySQL5.1以上的版本中,prepare語句可以支持這樣的操作。
  我們可以用set @var=...設置變量,然后用prepare stml from @var設置動態sql語句,最后用EXECUTE stml;執行語句。

     下面是以時間為表名,動態備份一個表的sql執行過程:

  

SET @sqlstr = CONCAT('create table user_',DATE_FORMAT(CURDATE(),'%Y_%m_%d'),' like user');
PREPARE stmt1 FROM @sqlstr ;
EXECUTE stmt1 ;
SET @sqlstr = CONCAT('insert into user_',DATE_FORMAT(CURDATE(),'%Y_%m_%d'),' select * from user'); PREPARE stmt1 FROM @sqlstr ; EXECUTE stmt1 ;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM