1.0.356.sql 4.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. -- 1.0.356:数据库层阻断旧节点再次写入 S1 无效租户/工厂作用域。
  2. UPDATE `mdp_stg_so` SET `factory_id`=NULL
  3. WHERE `tenant_id` > 0 AND `factory_id`=`tenant_id`;
  4. UPDATE `mdp_std_so` SET `factory_id`=1
  5. WHERE `tenant_id` > 0 AND `factory_id`=`tenant_id`;
  6. DELETE FROM `mdp_stg_so`
  7. WHERE `id` IN (
  8. SELECT `id` FROM (
  9. SELECT `id`,
  10. ROW_NUMBER() OVER (
  11. PARTITION BY `source_system`,`source_table`,`source_biz_key`
  12. ORDER BY `update_time` DESC,`id` DESC) AS `rn`
  13. FROM `mdp_stg_so` IGNORE INDEX (`uk_source_key`)
  14. ) duplicate_rows
  15. WHERE `rn` > 1
  16. );
  17. DELETE FROM `mdp_stg_so` WHERE `tenant_id` IS NULL OR `tenant_id` IN (0,1,1300000000001);
  18. DELETE FROM `mdp_std_so` WHERE `tenant_id` IS NULL OR `tenant_id` IN (0,1,1300000000001);
  19. DELETE FROM `dwd_ship_trans`
  20. WHERE `id` IN (
  21. SELECT `id` FROM (
  22. SELECT `id`,
  23. ROW_NUMBER() OVER (
  24. PARTITION BY `tenant_id`,`stat_date`,`order_no`,`order_line`,`item_code`
  25. ORDER BY `id` DESC) AS `rn`
  26. FROM `dwd_ship_trans` IGNORE INDEX (`uk_order_line_stat`)
  27. ) duplicate_rows
  28. WHERE `rn` > 1
  29. );
  30. DELETE FROM `dwd_requirement_examine_detail`
  31. WHERE `id` IN (
  32. SELECT `id` FROM (
  33. SELECT `id`,
  34. ROW_NUMBER() OVER (
  35. PARTITION BY `tenant_id`,`row_id`,`calc_batch_id`
  36. ORDER BY `id` DESC) AS `rn`
  37. FROM `dwd_requirement_examine_detail` IGNORE INDEX (`uk_dwd_req_exam_detail`)
  38. ) duplicate_rows
  39. WHERE `rn` > 1
  40. );
  41. DELETE FROM `dwd_ship_trans` WHERE `tenant_id` IN (0,1,1300000000001) OR `factory_id`=`tenant_id`;
  42. DELETE FROM `dwd_requirement_examine_detail` WHERE `tenant_id` IN (0,1,1300000000001) OR `factory_id`=`tenant_id`;
  43. DELETE FROM `ado_smart_ops_kpi_atomic_day` WHERE `tenant_id` IN (0,1,1300000000001) OR `factory_id`=`tenant_id`;
  44. DELETE FROM `ado_module_dashboard_rebuild_job`
  45. WHERE `tenant_id` IN (0,1,1300000000001) OR `factory_id`=`tenant_id`;
  46. SET @sql := IF(
  47. (SELECT COUNT(*) FROM information_schema.TABLE_CONSTRAINTS
  48. WHERE CONSTRAINT_SCHEMA=DATABASE() AND TABLE_NAME='mdp_stg_so'
  49. AND CONSTRAINT_NAME='ck_mdp_stg_so_valid_scope')=0,
  50. 'ALTER TABLE `mdp_stg_so` ADD CONSTRAINT `ck_mdp_stg_so_valid_scope` CHECK (`tenant_id` IS NOT NULL AND `tenant_id` NOT IN (0,1,1300000000001) AND (`factory_id` IS NULL OR `factory_id`<>`tenant_id`))',
  51. 'DO 0');
  52. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  53. SET @sql := IF(
  54. (SELECT COUNT(*) FROM information_schema.TABLE_CONSTRAINTS
  55. WHERE CONSTRAINT_SCHEMA=DATABASE() AND TABLE_NAME='mdp_std_so'
  56. AND CONSTRAINT_NAME='ck_mdp_std_so_valid_scope')=0,
  57. 'ALTER TABLE `mdp_std_so` ADD CONSTRAINT `ck_mdp_std_so_valid_scope` CHECK (`tenant_id` IS NOT NULL AND `tenant_id` NOT IN (0,1,1300000000001) AND (`factory_id` IS NULL OR `factory_id`<>`tenant_id`))',
  58. 'DO 0');
  59. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  60. SET @sql := IF(
  61. (SELECT COUNT(*) FROM information_schema.TABLE_CONSTRAINTS
  62. WHERE CONSTRAINT_SCHEMA=DATABASE() AND TABLE_NAME='dwd_ship_trans'
  63. AND CONSTRAINT_NAME='ck_dwd_ship_trans_valid_scope')=0,
  64. 'ALTER TABLE `dwd_ship_trans` ADD CONSTRAINT `ck_dwd_ship_trans_valid_scope` CHECK (`tenant_id` NOT IN (0,1,1300000000001) AND (`factory_id` IS NULL OR `factory_id`<>`tenant_id`))',
  65. 'DO 0');
  66. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  67. SET @sql := IF(
  68. (SELECT COUNT(*) FROM information_schema.TABLE_CONSTRAINTS
  69. WHERE CONSTRAINT_SCHEMA=DATABASE() AND TABLE_NAME='dwd_requirement_examine_detail'
  70. AND CONSTRAINT_NAME='ck_dwd_requirement_valid_scope')=0,
  71. 'ALTER TABLE `dwd_requirement_examine_detail` ADD CONSTRAINT `ck_dwd_requirement_valid_scope` CHECK (`tenant_id` NOT IN (0,1,1300000000001) AND (`factory_id` IS NULL OR `factory_id`<>`tenant_id`))',
  72. 'DO 0');
  73. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  74. SET @sql := IF(
  75. (SELECT COUNT(*) FROM information_schema.TABLE_CONSTRAINTS
  76. WHERE CONSTRAINT_SCHEMA=DATABASE() AND TABLE_NAME='ado_smart_ops_kpi_atomic_day'
  77. AND CONSTRAINT_NAME='ck_kpi_atomic_valid_scope')=0,
  78. 'ALTER TABLE `ado_smart_ops_kpi_atomic_day` ADD CONSTRAINT `ck_kpi_atomic_valid_scope` CHECK (`tenant_id` NOT IN (0,1,1300000000001) AND (`factory_id` IS NULL OR `factory_id`<>`tenant_id`))',
  79. 'DO 0');
  80. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  81. SET @sql := IF(
  82. (SELECT COUNT(*) FROM information_schema.TABLE_CONSTRAINTS
  83. WHERE CONSTRAINT_SCHEMA=DATABASE() AND TABLE_NAME='ado_module_dashboard_rebuild_job'
  84. AND CONSTRAINT_NAME='ck_rebuild_job_valid_scope')=0,
  85. 'ALTER TABLE `ado_module_dashboard_rebuild_job` ADD CONSTRAINT `ck_rebuild_job_valid_scope` CHECK (`tenant_id` NOT IN (0,1,1300000000001) AND `factory_id`<>`tenant_id`)',
  86. 'DO 0');
  87. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;