Files
yunzerwebsiteallinone/go/docs/sql/alter_crm_unit_default.sql
T
2026-09-15 10:44:31 +08:00

23 lines
1.6 KiB
SQL

-- =============================================================
-- CRM units: mark system default units as not editable/deletable
-- Table: yz_backend_crm_unit
-- is_default = 1 -> system default unit (seeded by the system,
-- cannot be edited or deleted by tenants)
-- is_default = 0 -> tenant custom unit (full CRUD)
-- Existing seeded default units (matched by name) are marked below;
-- the backend also self-heals the flag on first use after upgrade.
-- Run: mysql --default-character-set=utf8mb4 -h<host> -P<port> -u<user> -p <db> < alter_crm_unit_default.sql
-- (re-running only reports "Duplicate column name", which is safe)
-- =============================================================
-- 可重复执行:列不存在时才执行 ALTER,已存在自动跳过(不再报 1060 Duplicate column)。
SET @tbl := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_crm_unit');
SET @col := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_crm_unit' AND COLUMN_NAME = 'is_default');
SET @ddl := IF(@tbl > 0 AND @col = 0, 'ALTER TABLE `yz_backend_crm_unit` ADD COLUMN `is_default` TINYINT NOT NULL DEFAULT 0 COMMENT ''1=system default unit (read-only), 0=tenant custom'' AFTER `status`', 'DO 0');
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-- Mark seeded default units (same list as backend crmDefaultUnits)
UPDATE `yz_backend_crm_unit`
SET `is_default` = 1
WHERE `name` IN ('套', '台', '个', '件', '批', '次', '项', '人月', '人天', '年', '月', '米', '平方米', '吨', '千克', '箱');