订单/包裹/库存/店铺授权/店铺订单列表补充 customerName、customerCode;库存绑定按会话客户解析并兼容可用量;修复客户 mapId 识别与 ConcurrencyStamp 迁移。 Co-authored-by: Cursor <cursoragent@cursor.com>
64 lines
2.6 KiB
SQL
64 lines
2.6 KiB
SQL
-- 给缺少 ConcurrencyStamp 的 OMS 表补列(可重复执行)
|
||
-- Fake AggregateRoot 自带该字段,SqlSugar 查询会带上;库表没有就会报:
|
||
-- Unknown column 'ConcurrencyStamp' in 'field list'
|
||
--
|
||
-- 注意:不要用 DEFAULT (UUID())。在 STATEMENT/MIXED 复制下会触发:
|
||
-- 1674 Statement is unsafe because it uses a system function that may return a different value on the replica.
|
||
-- 默认用固定 GUID;插入/更新时由 ORM 写入真实 UUID。
|
||
--
|
||
-- 用法:在业务库执行本脚本;若仍报错,把报错 SQL 里的表名追加到下方列表。
|
||
|
||
SET @tables := 't_order_stock_bind,C_inventory,C_parcel,C_parcel_item,C_parcel_arrival,C_sku,C_bin_location,C_inbound_notice,C_inbound_box,C_inbound_box_line,C_sku_platform_map,t_sales_store,t_sales_store_order,t_sales_store_order_line,t_customer_sender_address';
|
||
|
||
DROP PROCEDURE IF EXISTS sp_add_concurrency_stamp_if_missing;
|
||
DELIMITER $$
|
||
CREATE PROCEDURE sp_add_concurrency_stamp_if_missing()
|
||
BEGIN
|
||
DECLARE done INT DEFAULT 0;
|
||
DECLARE tname VARCHAR(128);
|
||
DECLARE cur CURSOR FOR
|
||
SELECT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(@tables, ',', n.n), ',', -1)) AS t
|
||
FROM (
|
||
SELECT a.N + b.N * 10 + 1 AS n
|
||
FROM
|
||
(SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) a,
|
||
(SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) b
|
||
) n
|
||
WHERE n.n <= 1 + (LENGTH(@tables) - LENGTH(REPLACE(@tables, ',', '')));
|
||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
|
||
|
||
OPEN cur;
|
||
read_loop: LOOP
|
||
FETCH cur INTO tname;
|
||
IF done THEN
|
||
LEAVE read_loop;
|
||
END IF;
|
||
IF tname IS NULL OR tname = '' THEN
|
||
ITERATE read_loop;
|
||
END IF;
|
||
IF NOT EXISTS (
|
||
SELECT 1 FROM information_schema.TABLES
|
||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = tname
|
||
) THEN
|
||
ITERATE read_loop;
|
||
END IF;
|
||
IF NOT EXISTS (
|
||
SELECT 1 FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = tname AND COLUMN_NAME = 'ConcurrencyStamp'
|
||
) THEN
|
||
SET @ddl := CONCAT(
|
||
'ALTER TABLE `', tname,
|
||
'` ADD COLUMN `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT ''00000000-0000-0000-0000-000000000000'' COMMENT ''并发戳'''
|
||
);
|
||
PREPARE stmt FROM @ddl;
|
||
EXECUTE stmt;
|
||
DEALLOCATE PREPARE stmt;
|
||
END IF;
|
||
END LOOP;
|
||
CLOSE cur;
|
||
END$$
|
||
DELIMITER ;
|
||
|
||
CALL sp_add_concurrency_stamp_if_missing();
|
||
DROP PROCEDURE IF EXISTS sp_add_concurrency_stamp_if_missing;
|