0_update_data_table.sql 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. DROP PROCEDURE IF EXISTS update_data_table;
  2. DELIMITER $$
  3. CREATE PROCEDURE update_data_table(
  4. IN citySuffix VARCHAR(20),
  5. IN prevtabelId BIGINT(20))
  6. BEGIN
  7. DECLARE isover INT DEFAULT 0;
  8. DECLARE table_migr_table_name varchar(255) DEFAULT 'xwcmtableinfo';
  9. DECLARE f_TABLEINFOID int(11) DEFAULT NULL;
  10. DECLARE f_TABLENAME varchar(50) DEFAULT NULL;
  11. DECLARE f_ANOTHERNAME varchar(100) DEFAULT NULL;
  12. DECLARE f_TABLEDESC varchar(200) DEFAULT NULL;
  13. DECLARE f_CRUSER varchar(30) DEFAULT NULL;
  14. DECLARE f_CRTIME datetime DEFAULT NULL;
  15. DECLARE f_OWNERTYPE int(11) DEFAULT '1';
  16. DECLARE f_OWNERID int(11) DEFAULT '4';
  17. DECLARE v_sql longtext DEFAULT '';
  18. DECLARE cur CURSOR FOR
  19. SELECT
  20. TABLEINFOID,
  21. TABLENAME,
  22. ANOTHERNAME,
  23. TABLEDESC,
  24. CRUSER,
  25. CRTIME,
  26. OWNERTYPE,
  27. OWNERID
  28. FROM xwcmtableinfo
  29. ORDER BY TABLEINFOID asc;
  30. DECLARE CONTINUE HANDLER FOR NOT FOUND SET isover = 1;
  31. OPEN cur;
  32. FETCH cur INTO
  33. f_TABLEINFOID,
  34. f_TABLENAME,
  35. f_ANOTHERNAME,
  36. f_TABLEDESC,
  37. f_CRUSER,
  38. f_CRTIME,
  39. f_OWNERTYPE,
  40. f_OWNERID
  41. ;
  42. set @i = 0;
  43. WHILE isover= 0 DO
  44. # 断点续传
  45. IF (f_TABLEINFOID > prevtabelId)
  46. THEN
  47. set @max_dbfieldinfo_id = ifnull((SELECT MAX(DBFIELDINFOID) from xwcmdbfieldinfo), 0);
  48. set @sql = '';
  49. call update_data_dbfield(f_TABLENAME, f_TABLEINFOID, @max_dbfieldinfo_id + (@i * 9), @sql);
  50. set @i = @i + 1;
  51. set @id_field_sql = concat(' ALTER TABLE wcmmetatable', f_TABLENAME,
  52. ' CHANGE COLUMN `WCMMetaTable',f_TABLENAME,
  53. 'ID` `wcmmetatable',f_TABLENAME, citySuffix,
  54. 'ID` int(11) NOT NULL;');
  55. set v_sql = concat(v_sql, @sql, @id_field_sql);
  56. SET @log_sql = build_migration_log_sql('update_data_tabel_id', f_TABLEINFOID, now());
  57. prepare stmt from @log_sql;
  58. EXECUTE stmt;
  59. deallocate prepare stmt;
  60. END IF ;
  61. FETCH cur INTO
  62. f_TABLEINFOID,
  63. f_TABLENAME,
  64. f_ANOTHERNAME,
  65. f_TABLEDESC,
  66. f_CRUSER,
  67. f_CRTIME,
  68. f_OWNERTYPE,
  69. f_OWNERID
  70. ;
  71. END WHILE;
  72. select v_sql info;
  73. CLOSE cur;
  74. END $$
  75. DELIMITER ;