Files
BMS/bms-back/sql/data/customer_supplier_contract_date.sql
T
2026-10-28 17:14:42 +08:00

41 lines
1.8 KiB
SQL

-- 客户主表增加合同开始时间、合同结束时间
-- 供应商只增加合同结束时间;合同开始时间与原有合作开始日期重复,已有列则删除
-- 客户列已存在时不要重复执行前面的 ALTER
SET NAMES utf8mb4;
-- 先去掉供应商上后加的合同开始时间,避免后续语句失败时这一列还留着
SET @has_supplier_contract_start := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'sup_supplier'
AND COLUMN_NAME = 'contract_start_date'
);
SET @drop_supplier_contract_start := IF(
@has_supplier_contract_start > 0,
'ALTER TABLE sup_supplier DROP COLUMN contract_start_date',
'SELECT 1'
);
PREPARE drop_supplier_contract_start_stmt FROM @drop_supplier_contract_start;
EXECUTE drop_supplier_contract_start_stmt;
DEALLOCATE PREPARE drop_supplier_contract_start_stmt;
ALTER TABLE ctr_customer
ADD COLUMN contract_start_date date DEFAULT NULL COMMENT '合同开始时间' AFTER credit_ed,
ADD COLUMN contract_end_date date DEFAULT NULL COMMENT '合同结束时间' AFTER contract_start_date;
-- 供应商原有合作开始日期,只补合同结束时间(已有则跳过)
SET @has_supplier_contract_end := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'sup_supplier'
AND COLUMN_NAME = 'contract_end_date'
);
SET @add_supplier_contract_end := IF(
@has_supplier_contract_end = 0,
'ALTER TABLE sup_supplier ADD COLUMN contract_end_date date DEFAULT NULL COMMENT ''合同结束时间'' AFTER cooperation_start_date',
'SELECT 1'
);
PREPARE add_supplier_contract_end_stmt FROM @add_supplier_contract_end;
EXECUTE add_supplier_contract_end_stmt;
DEALLOCATE PREPARE add_supplier_contract_end_stmt;