46 lines
2.4 KiB
SQL
46 lines
2.4 KiB
SQL
-- ============================================================================
|
||
-- 预警阈值语义调整脚本(stock_warning_rules)
|
||
--
|
||
-- 用途:清理历史遗留的 minimum_available = 0 的预警规则行。
|
||
--
|
||
-- 背景:旧版判定规则是「参与预警 = 启用 AND 阈值 > 0」,阈值为 0 的行被 HAVING 条件
|
||
-- 完全屏蔽,从来没有生效过。正因为它们一直是沉默的,无法从数据上区分"当年故意
|
||
-- 设成 0"和"入库表单预填逻辑误写 0"。
|
||
-- 新版把 0 定为合法的预警值(含义是"库存降到 0 时预警"),这批行会在升级后
|
||
-- 立刻开始报警。因此一并删除,让它们回到"从未配置"(不预警)的状态——这与
|
||
-- 升级前的实际行为一致。
|
||
--
|
||
-- !! 破坏性操作,执行前请务必备份数据库 !!
|
||
--
|
||
-- 字符集:统一 utf8mb4。脚本开头 SET NAMES utf8mb4 确保中文正确落库,
|
||
-- 不依赖客户端默认字符集。
|
||
-- 幂等性:可重复执行(删除条件固定,清空后再执行不会影响任何行)。
|
||
--
|
||
-- 执行方式:
|
||
-- mysql -uroot -p --default-character-set=utf8mb4 wmms < scripts/update_warning_stock_zero.sql
|
||
-- ============================================================================
|
||
|
||
SET NAMES utf8mb4;
|
||
|
||
-- ---------------------------------------------------------------------------
|
||
-- 1. 执行前先看看要删掉哪些行
|
||
-- 如果结果里有你确实想保留的物料,请先手工把它的阈值改成大于 0 的值。
|
||
-- ---------------------------------------------------------------------------
|
||
SELECT id, organization_id, warehouse_id, material_id, minimum_available, enabled, updated_at
|
||
FROM stock_warning_rules
|
||
WHERE minimum_available = 0;
|
||
|
||
-- ---------------------------------------------------------------------------
|
||
-- 2. 删除阈值为 0 的历史规则
|
||
-- enabled 是 TRUE 还是 FALSE 都要删:前者是"沉默的启用"(升级后会突然报警),
|
||
-- 后者本就等同于"从未配置"。
|
||
-- ---------------------------------------------------------------------------
|
||
DELETE FROM stock_warning_rules WHERE minimum_available = 0;
|
||
|
||
-- ---------------------------------------------------------------------------
|
||
-- 3. 确认清空,结果应为 0
|
||
-- ---------------------------------------------------------------------------
|
||
SELECT COUNT(*) AS remaining_zero_threshold_rules
|
||
FROM stock_warning_rules
|
||
WHERE minimum_available = 0;
|