23 lines
1.6 KiB
SQL
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 ('套', '台', '个', '件', '批', '次', '项', '人月', '人天', '年', '月', '米', '平方米', '吨', '千克', '箱');
|