diff --git a/db_migrations/deploy_borrow_transfer_all.sql b/db_migrations/deploy_borrow_transfer_all.sql index 3073663..52d8c15 100644 --- a/db_migrations/deploy_borrow_transfer_all.sql +++ b/db_migrations/deploy_borrow_transfer_all.sql @@ -6,7 +6,7 @@ -- -- 执行 -- docker exec -i psql -U <用户> -d <库名> -v ON_ERROR_STOP=1 < 本文件 --- (含 \echo 核对段,需用 psql;其他客户端请删掉 \echo 行) +-- 脚本不含 psql 专有元命令,psql / DataGrip / DBeaver 均可直接整份执行。 -- -- 幂等 -- 全部 DDL 带 IF NOT EXISTS,可重复执行。 @@ -274,40 +274,43 @@ COMMIT; -- ============================================================================= -- 执行后核对 +-- +-- ★ 这里刻意**不用 psql 的 \echo**(DataGrip / DBeaver 等客户端不认元命令, +-- 会直接报语法错误)。改用 SELECT 输出一行带标签的常量,任何客户端都能跑。 -- ============================================================================= -\echo '=== 1) trans_borrow 四个新列(应 4 行)===' +SELECT '=== 1) trans_borrow 四个新列(应 4 行)===' AS "核对项"; SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'trans_borrow' AND column_name IN ('borrower_id','current_holder_id','current_holder_name','dispatch_operator') ORDER BY column_name; -\echo '=== 2) 两张新表(应 2 行)===' +SELECT '=== 2) 两张新表(应 2 行)===' AS "核对项"; SELECT table_name FROM information_schema.tables WHERE table_name IN ('trans_borrow_transfer','trans_borrow_return') ORDER BY table_name; -\echo '=== 3) 索引总数(transfer 应 8 个含主键 / return 应 4 个含主键)===' +SELECT '=== 3) 索引总数(transfer 应 8 个含主键 / return 应 4 个含主键)===' AS "核对项"; SELECT tablename, count(*) AS 索引数 FROM pg_indexes WHERE tablename IN ('trans_borrow_transfer','trans_borrow_return') GROUP BY tablename ORDER BY tablename; -\echo '=== 4) 身份锚点回填覆盖率 ===' +SELECT '=== 4) 身份锚点回填覆盖率 ===' AS "核对项"; SELECT count(*) AS 借用总行数, count(borrower_id) AS 已锚定借用人, count(*) FILTER (WHERE is_returned = FALSE) AS 未归还行, count(current_holder_id) AS 已锚定持有人 FROM trans_borrow; -\echo '=== 5) 同单多持有人单数(部分转交的正常形态,无需处理)===' +SELECT '=== 5) 同单多持有人单数(部分转交的正常形态,无需处理)===' AS "核对项"; SELECT count(*) AS 拆分持有单数 FROM ( SELECT borrow_no FROM trans_borrow WHERE is_returned = FALSE GROUP BY borrow_no HAVING count(DISTINCT current_holder_id) > 1 ) t; -\echo '=== 6) 遗留拼接痕迹(应为 0)===' +SELECT '=== 6) 遗留拼接痕迹(应为 0)===' AS "核对项"; SELECT count(*) AS 残留拼接 FROM trans_borrow_transfer WHERE remark LIKE '%[拒绝原因] %'; -\echo '=== 7) 待告知发起方的拒绝(存量已标记,应为 0)===' +SELECT '=== 7) 待告知发起方的拒绝(存量已标记,应为 0)===' AS "核对项"; SELECT count(*) AS 待告知 FROM trans_borrow_transfer WHERE status = 'REJECTED' AND reject_seen_at IS NULL;