Files
BMS/bms-back/sql/price/quote_customer_code_alter.sql
T
2026-09-17 14:42:48 +08:00

30 lines
1.1 KiB
SQL

-- prc_quote add customer_code; backfill from bms_customer
-- Idempotent
SET NAMES utf8mb4;
SET @db := DATABASE();
SET @has := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_quote' AND COLUMN_NAME = 'customer_code'
);
SET @sql := IF(@has = 0,
'ALTER TABLE prc_quote ADD COLUMN customer_code VARCHAR(50) DEFAULT NULL COMMENT ''customer code'' AFTER customer_id',
'SELECT 1');
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
SET @hasIdx := (
SELECT COUNT(*) FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_quote' AND INDEX_NAME = 'idx_quote_customer_code'
);
SET @sql := IF(@hasIdx = 0,
'ALTER TABLE prc_quote ADD INDEX idx_quote_customer_code (customer_code, biz_date)',
'SELECT 1');
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
UPDATE prc_quote q
INNER JOIN bms_customer c ON c.customer_id = q.customer_id
SET q.customer_code = c.customer_code
WHERE q.customer_id IS NOT NULL
AND q.customer_id <> 0
AND (q.customer_code IS NULL OR q.customer_code = '');