30 lines
1.1 KiB
SQL
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 = '');
|