-- 1.0.505.verify.sql -- 契约(由 AutoVersionUpdate.RunVerifyScriptIfExists 逐条执行取首行首列判真): -- ① 禁止 SET @var(返回 null 即判失败)→ 一律内联子查询,每条语句自包含 -- ② 每条返回「通过为真」的标量(用 = 期望值 得 1/0),不得返回错误条数 -- ③ 一条语句一个断言,不用 UNION 汇总 -- ④ 文件以最后一条 SQL 的分号结束,末尾不得残留 comment-only 块 -- -- 本文件只断言「旧数据已清空」与「没有顺手动别的表」。 -- 断言 2~4 是刻意的越界防护:本迁移只有一条 DELETE,但把「不该被改的表仍有数据」 -- 写成断言,能在将来有人往这个脚本里加东西时立刻拦住 —— 一条 DELETE 写错表名的代价, -- 是把当前唯一在用的通知配置或规则责任池删空,而那种损失没有回滚点。 SELECT (SELECT COUNT(*) FROM `ado_s8_notification_layer`) = 0; SELECT (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ado_s8_notification_layer') = 1; SELECT (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME IN ('ado_s8_notification_recipient','ado_s8_watch_rule', 'ado_s8_rule_handler_user','ado_s8_rule_responsibility_user')) = 4;