V2__bool_columns_to_bit.sql
1.27 KB
-- Flyway migration V2 — switch boolean flag columns from TINYINT(1) to BIT(1).
--
-- Why: BIT(1) gives strict 0/1 storage at the type level. MySQL Connector/J 8.x
-- maps BIT(1) ↔ Boolean automatically (no driver param needed). MyBatis-Plus
-- entity fields stay `Boolean`, no Java code changes required. Existing queries
-- like `WHERE bDeleted = 0` continue to work because MySQL implicitly converts
-- integer literals to bit values.
--
-- ALTER TABLE on a populated table preserves data: TINYINT 0 → BIT b'0',
-- TINYINT 1 → BIT b'1'. Indexes (e.g. idx_deleted_login) survive the modify.
ALTER TABLE `tUser`
MODIFY COLUMN `bCanModifyDocs` BIT(1) NOT NULL DEFAULT b'0' COMMENT '单据修改权限;0 否 / 1 是',
MODIFY COLUMN `bDeleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '软删除标记;0 有效 / 1 已作废';
ALTER TABLE `tStaff`
MODIFY COLUMN `bDeleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '软删除标记';
ALTER TABLE `tPermissionCategory`
MODIFY COLUMN `bDeleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '软删除标记';
ALTER TABLE `tModule`
MODIFY COLUMN `bShowPermission` BIT(1) NOT NULL DEFAULT b'0' COMMENT '权限是否显示;0 否 / 1 是',
MODIFY COLUMN `bDeleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '软删除标记';