-- 派车日历自动同步现场日历,MySQL 5.7 / utf8mb4,可重复执行。 -- 前置:2026-10-30-dispatch-calendar-document-type.sql。先执行迁移再部署后端和 Web。 -- 只改变结构:历史来源默认 site_sync_enabled=0,后续编辑也不补录。 -- 上线后后端新建来源显式设置为1;手工现场记录仍为0。 SET NAMES utf8mb4; SET @col_exists = ( SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_dispatch_calendar' AND COLUMN_NAME = 'site_sync_enabled' ); SET @ddl = IF(@col_exists = 0, 'ALTER TABLE `pl_dispatch_calendar` ADD COLUMN `site_sync_enabled` smallint NOT NULL DEFAULT 0 COMMENT ''是否启用现场同步:仅新建来源置1,历史为0'' AFTER `document_type`', 'SELECT 1'); PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @col_exists = ( SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_dispatch_calendar' AND COLUMN_NAME = 'source_record_id' ); SET @ddl = IF(@col_exists = 0, 'ALTER TABLE `pl_dispatch_calendar` ADD COLUMN `source_record_id` varchar(64) DEFAULT NULL COMMENT ''自动现场记录的来源派车ID,手工记录为空'' AFTER `site_sync_enabled`', 'SELECT 1'); PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @idx_exists = ( SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_dispatch_calendar' AND INDEX_NAME = 'uk_dispatch_calendar_source' ); SET @ddl = IF(@idx_exists = 0, 'ALTER TABLE `pl_dispatch_calendar` ADD UNIQUE KEY `uk_dispatch_calendar_source` (`tenant_no`, `source_record_id`)', 'SELECT 1'); PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;