更新若干功能
This commit is contained in:
1 parent
892ba5886d
commit
79d5ae6b66
45 files changed
+6755
-38
No files matched your search
@@ -0,0 +1,44 @@
|
||||
-- =============================================================
|
||||
-- OA工作日报:删除改为软删除(已建表环境执行)
|
||||
--
|
||||
-- 背景:原设计为物理删除(日报被删时同步删除评论),现改为软删除。
|
||||
-- 日报:is_deleted=0 未删除;删除时写入记录 ID 作为删除批次标记。
|
||||
-- 评论:is_deleted=0 未删除;删除时置 1。
|
||||
--
|
||||
-- 为什么唯一键要加 is_deleted:
|
||||
-- 原唯一键 (tid, user_id, report_date) 会让「删除后同一天重新填写」与
|
||||
-- 历史软删记录冲突。把 is_deleted 加入唯一键后,删除时写入记录 ID
|
||||
-- (每条记录 ID 唯一),同一天可反复「填写→删除→重新填写」。
|
||||
--
|
||||
-- 适用:已执行过 create_oa_dailyreport.sql 的环境;
|
||||
-- 新库直接执行 create_oa_dailyreport.sql 即为软删除结构,无需本脚本。
|
||||
-- 幂等:重复执行安全。
|
||||
-- =============================================================
|
||||
|
||||
USE `go-platform`;
|
||||
|
||||
-- 1) is_deleted 扩为 BIGINT UNSIGNED,用于存放删除批次(记录 ID)。MODIFY 幂等。
|
||||
ALTER TABLE `yz_backend_oa_daily_report`
|
||||
MODIFY COLUMN `is_deleted` BIGINT UNSIGNED NOT NULL DEFAULT 0
|
||||
COMMENT '软删除标记:0=未删除;删除时写入记录ID(避免唯一键冲突)';
|
||||
|
||||
-- 2) 唯一键加入 is_deleted(先判断当前索引列,避免重复执行报 1091)
|
||||
SET @idx_cols := (
|
||||
SELECT GROUP_CONCAT(`COLUMN_NAME` ORDER BY `SEQ_IN_INDEX`)
|
||||
FROM `information_schema`.`STATISTICS`
|
||||
WHERE `TABLE_SCHEMA` = DATABASE()
|
||||
AND `TABLE_NAME` = 'yz_backend_oa_daily_report'
|
||||
AND `INDEX_NAME` = 'uk_tid_user_date'
|
||||
);
|
||||
SET @ddl := IF(
|
||||
@idx_cols = 'tid,user_id,report_date,is_deleted',
|
||||
'SELECT ''uk_tid_user_date 已包含 is_deleted,跳过'' AS msg',
|
||||
'ALTER TABLE `yz_backend_oa_daily_report` DROP INDEX `uk_tid_user_date`, ADD UNIQUE KEY `uk_tid_user_date` (`tid`, `user_id`, `report_date`, `is_deleted`)'
|
||||
);
|
||||
PREPARE stmt FROM @ddl;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 3) 核对结果
|
||||
SHOW INDEX FROM `yz_backend_oa_daily_report` WHERE `Key_name` = 'uk_tid_user_date';
|
||||
SHOW FULL COLUMNS FROM `yz_backend_oa_daily_report` WHERE `Field` = 'is_deleted';
|
||||
Reference in new issue
Block a user