20260730231110
This commit is contained in:
1 parent
4929b78434
commit
318fa0d9e1
23 files changed
+4026
-506
No files matched your search
@@ -323,33 +323,15 @@ BEGIN TRANSACTION;
|
||||
);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.b_other', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.[b_other] (
|
||||
[b_cateid] varchar(50) NULL,
|
||||
[b_id] bigint NOT NULL,
|
||||
[b_name_c] nvarchar(50) NULL,
|
||||
[b_1] numeric(18,0) NULL,
|
||||
[b_2] varchar(50) NULL,
|
||||
[b_desc] nvarchar(255) NULL,
|
||||
[b_inputuser_id] bigint NULL,
|
||||
[b_inputdatetime] datetime2(0) NULL,
|
||||
[b_updateuser_id] bigint NULL,
|
||||
[b_updatedatetime] datetime2(0) NULL,
|
||||
[b_code] varchar(50) NOT NULL,
|
||||
CONSTRAINT [PK_b_other] PRIMARY KEY ([b_id]),
|
||||
CONSTRAINT [UQ_b_other_b_code] UNIQUE ([b_code])
|
||||
);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.b_other_bmfl', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.[b_other_bmfl] (
|
||||
b_id bigint NOT NULL,
|
||||
b_parent_id bigint NULL,
|
||||
b_name nvarchar(150) NOT NULL,
|
||||
b_level int NOT NULL CONSTRAINT [DF_b_other_bmfl_level] DEFAULT (1),
|
||||
b_path varchar(1000) NOT NULL,
|
||||
b_i18n varchar(150) NULL,
|
||||
b_node_type varchar(20) NOT NULL CONSTRAINT [DF_b_other_bmfl_node_type] DEFAULT ('category'),
|
||||
b_module_code varchar(100) NULL,
|
||||
b_xh int NOT NULL CONSTRAINT [DF_b_other_bmfl_xh] DEFAULT (0),
|
||||
b_canuse int NOT NULL CONSTRAINT [DF_b_other_bmfl_canuse] DEFAULT (1),
|
||||
b_inputuser_id bigint NULL,
|
||||
@@ -358,10 +340,15 @@ BEGIN TRANSACTION;
|
||||
b_updatedatetime datetime2(0) NULL,
|
||||
CONSTRAINT [PK_b_other_bmfl] PRIMARY KEY (b_id),
|
||||
CONSTRAINT [CK_b_other_bmfl_parent] CHECK (b_parent_id IS NULL OR b_parent_id <> b_id),
|
||||
CONSTRAINT [CK_b_other_bmfl_node_type] CHECK (b_node_type IN ('category', 'module')),
|
||||
CONSTRAINT [CK_b_other_bmfl_module_ref] CHECK (
|
||||
(b_node_type = 'category' AND b_module_code IS NULL)
|
||||
OR (b_node_type = 'module' AND b_module_code IS NOT NULL AND LEN(LTRIM(RTRIM(b_module_code))) > 0)
|
||||
),
|
||||
CONSTRAINT [FK_b_other_bmfl_parent] FOREIGN KEY (b_parent_id) REFERENCES dbo.[b_other_bmfl] (b_id)
|
||||
);
|
||||
CREATE INDEX [IX_b_other_bmfl_parent] ON dbo.[b_other_bmfl] (b_parent_id, b_xh, b_id);
|
||||
CREATE INDEX [IX_b_other_bmfl_path] ON dbo.[b_other_bmfl] (b_path, b_xh, b_id);
|
||||
CREATE INDEX [IX_b_other_bmfl_module] ON dbo.[b_other_bmfl] (b_node_type, b_module_code);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.b_othercompany_accountbank', N'U') IS NULL
|
||||
|
||||
@@ -17,10 +17,18 @@ BEGIN TRANSACTION;
|
||||
THROW 52001, N'base directory not found. Run 012 / 002 migration first.', 1;
|
||||
|
||||
/* =========================================================================
|
||||
2. 创建 page 模块: m_base_otherdata
|
||||
2. 创建 page 模块: base_otherdata
|
||||
========================================================================= */
|
||||
IF EXISTS (SELECT 1 FROM dbo.s_module WHERE b_code = 'm_base_otherdata')
|
||||
AND NOT EXISTS (SELECT 1 FROM dbo.s_module WHERE b_code = 'base_otherdata')
|
||||
BEGIN
|
||||
UPDATE dbo.s_module
|
||||
SET b_code = 'base_otherdata'
|
||||
WHERE b_code = 'm_base_otherdata';
|
||||
END;
|
||||
|
||||
DECLARE @PageId bigint = 920000000000001100;
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.s_module WHERE b_code = 'm_base_otherdata')
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.s_module WHERE b_code = 'base_otherdata')
|
||||
BEGIN
|
||||
IF EXISTS (SELECT 1 FROM dbo.s_module WHERE b_id = @PageId)
|
||||
THROW 52002, N'The reserved otherdata page ID is already in use.', 1;
|
||||
@@ -30,13 +38,13 @@ BEGIN TRANSACTION;
|
||||
b_route, b_viewtable, b_savetable, b_keyfield, b_orderfield,
|
||||
b_canmenu, b_canuse, b_xh
|
||||
) VALUES (
|
||||
@PageId, 'm_base_otherdata', @BaseId, N'其他数据',
|
||||
@PageId, 'base_otherdata', @BaseId, N'其他数据',
|
||||
'menu.base_otherdata', 'page', '/base/otherdata',
|
||||
NULL, NULL, NULL, NULL, 1, 1, 30
|
||||
);
|
||||
END
|
||||
ELSE
|
||||
SET @PageId = (SELECT b_id FROM dbo.s_module WHERE b_code = 'm_base_otherdata');
|
||||
SET @PageId = (SELECT b_id FROM dbo.s_module WHERE b_code = 'base_otherdata');
|
||||
|
||||
/* =========================================================================
|
||||
3. 创建 data 模块辅助存储过程
|
||||
|
||||
@@ -1,78 +1,175 @@
|
||||
/* 扩展 b_other_bmfl 表,添加 b_module_code 字段关联 s_module 数据模块。
|
||||
分类节点 b_module_code 为空(仅做分组),叶子节点指向对应的 data 模块。*/
|
||||
/* 其他数据分类树采用引用设计:
|
||||
category 节点只维护树结构和分类名称,module 节点只引用 s_module.data 的 b_code。*/
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
/* =========================================================================
|
||||
1. 添加 b_module_code 列
|
||||
========================================================================= */
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM sys.columns
|
||||
WHERE object_id = OBJECT_ID(N'dbo.b_other_bmfl') AND name = 'b_module_code'
|
||||
)
|
||||
IF OBJECT_ID(N'dbo.b_other_bmfl', N'U') IS NULL
|
||||
THROW 52301, N'dbo.b_other_bmfl does not exist.', 1;
|
||||
|
||||
IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_node_type') IS NULL
|
||||
BEGIN
|
||||
ALTER TABLE dbo.b_other_bmfl
|
||||
ADD b_module_code nvarchar(100) NULL;
|
||||
ADD b_node_type varchar(20) NOT NULL
|
||||
CONSTRAINT [DF_b_other_bmfl_node_type] DEFAULT ('category') WITH VALUES;
|
||||
END;
|
||||
|
||||
/* =========================================================================
|
||||
2. 插入演示分类数据(基础信息 / 财务信息 / 物流信息 分组)
|
||||
========================================================================= */
|
||||
DECLARE @CatBasic bigint = 930000000000000101;
|
||||
DECLARE @CatFinance bigint = 930000000000000102;
|
||||
DECLARE @CatLogistics bigint = 930000000000000103;
|
||||
IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_module_code') IS NULL
|
||||
BEGIN
|
||||
ALTER TABLE dbo.b_other_bmfl
|
||||
ADD b_module_code varchar(100) NULL;
|
||||
END;
|
||||
|
||||
/* ---- 基础信息 ---- */
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @CatBasic)
|
||||
INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_level, b_path, b_xh, b_canuse, b_module_code)
|
||||
VALUES (@CatBasic, NULL, N'基础信息', 1, CAST(@CatBasic AS varchar(20)), 10, 1, NULL);
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID(N'dbo.b_other_bmfl')
|
||||
AND name = N'IX_b_other_bmfl_path'
|
||||
)
|
||||
DROP INDEX [IX_b_other_bmfl_path] ON dbo.b_other_bmfl;
|
||||
|
||||
/* ---- 财务信息 ---- */
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @CatFinance)
|
||||
INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_level, b_path, b_xh, b_canuse, b_module_code)
|
||||
VALUES (@CatFinance, NULL, N'财务信息', 1, CAST(@CatFinance AS varchar(20)), 20, 1, NULL);
|
||||
DECLARE @DropSql nvarchar(max);
|
||||
|
||||
/* ---- 物流信息 ---- */
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @CatLogistics)
|
||||
INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_level, b_path, b_xh, b_canuse, b_module_code)
|
||||
VALUES (@CatLogistics, NULL, N'物流信息', 1, CAST(@CatLogistics AS varchar(20)), 30, 1, NULL);
|
||||
IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_level') IS NOT NULL
|
||||
BEGIN
|
||||
SET @DropSql = NULL;
|
||||
SELECT @DropSql = N'ALTER TABLE dbo.b_other_bmfl DROP CONSTRAINT [' + REPLACE(dc.name, N']', N']]') + N']'
|
||||
FROM sys.default_constraints dc
|
||||
JOIN sys.columns c
|
||||
ON c.object_id = dc.parent_object_id
|
||||
AND c.column_id = dc.parent_column_id
|
||||
WHERE dc.parent_object_id = OBJECT_ID(N'dbo.b_other_bmfl')
|
||||
AND c.name = N'b_level';
|
||||
IF @DropSql IS NOT NULL EXEC sys.sp_executesql @DropSql;
|
||||
|
||||
/* =========================================================================
|
||||
3. 插入叶子节点(关联到已有 data 模块)
|
||||
========================================================================= */
|
||||
DECLARE @NodePort bigint = 930000000000000201;
|
||||
DECLARE @NodeCity bigint = 930000000000000202;
|
||||
DECLARE @NodeMoney bigint = 930000000000000203;
|
||||
DECLARE @NodeOceanline bigint = 930000000000000204;
|
||||
EXEC sys.sp_executesql N'ALTER TABLE dbo.b_other_bmfl DROP COLUMN b_level';
|
||||
END;
|
||||
|
||||
/* ---- 基础信息 / 港口 ---- */
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodePort)
|
||||
INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_level, b_path, b_xh, b_canuse, b_module_code)
|
||||
VALUES (@NodePort, @CatBasic, N'港口', 2,
|
||||
CAST(@CatBasic AS varchar(20)) + '/' + CAST(@NodePort AS varchar(20)),
|
||||
10, 1, 'd_other_port');
|
||||
IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_path') IS NOT NULL
|
||||
BEGIN
|
||||
SET @DropSql = NULL;
|
||||
SELECT @DropSql = N'ALTER TABLE dbo.b_other_bmfl DROP CONSTRAINT [' + REPLACE(dc.name, N']', N']]') + N']'
|
||||
FROM sys.default_constraints dc
|
||||
JOIN sys.columns c
|
||||
ON c.object_id = dc.parent_object_id
|
||||
AND c.column_id = dc.parent_column_id
|
||||
WHERE dc.parent_object_id = OBJECT_ID(N'dbo.b_other_bmfl')
|
||||
AND c.name = N'b_path';
|
||||
IF @DropSql IS NOT NULL EXEC sys.sp_executesql @DropSql;
|
||||
|
||||
/* ---- 基础信息 / 城市 ---- */
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodeCity)
|
||||
INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_level, b_path, b_xh, b_canuse, b_module_code)
|
||||
VALUES (@NodeCity, @CatBasic, N'城市', 2,
|
||||
CAST(@CatBasic AS varchar(20)) + '/' + CAST(@NodeCity AS varchar(20)),
|
||||
20, 1, 'd_other_city');
|
||||
EXEC sys.sp_executesql N'ALTER TABLE dbo.b_other_bmfl DROP COLUMN b_path';
|
||||
END;
|
||||
|
||||
/* ---- 财务信息 / 币种 ---- */
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodeMoney)
|
||||
INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_level, b_path, b_xh, b_canuse, b_module_code)
|
||||
VALUES (@NodeMoney, @CatFinance, N'币种', 2,
|
||||
CAST(@CatFinance AS varchar(20)) + '/' + CAST(@NodeMoney AS varchar(20)),
|
||||
10, 1, 'd_other_money');
|
||||
EXEC sys.sp_executesql N'
|
||||
UPDATE dbo.b_other_bmfl
|
||||
SET b_module_code = NULLIF(LTRIM(RTRIM(COALESCE(b_module_code, ''''))), '''');
|
||||
|
||||
/* ---- 物流信息 / 航线 ---- */
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodeOceanline)
|
||||
INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_level, b_path, b_xh, b_canuse, b_module_code)
|
||||
VALUES (@NodeOceanline, @CatLogistics, N'航线', 2,
|
||||
CAST(@CatLogistics AS varchar(20)) + '/' + CAST(@NodeOceanline AS varchar(20)),
|
||||
10, 1, 'd_other_oceanline');
|
||||
UPDATE dbo.b_other_bmfl
|
||||
SET b_node_type = CASE
|
||||
WHEN b_module_code IS NULL THEN ''category''
|
||||
ELSE ''module''
|
||||
END';
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM sys.check_constraints
|
||||
WHERE parent_object_id = OBJECT_ID(N'dbo.b_other_bmfl')
|
||||
AND name = N'CK_b_other_bmfl_node_type'
|
||||
)
|
||||
EXEC sys.sp_executesql N'
|
||||
ALTER TABLE dbo.b_other_bmfl
|
||||
ADD CONSTRAINT [CK_b_other_bmfl_node_type]
|
||||
CHECK (b_node_type IN (''category'', ''module''))';
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM sys.check_constraints
|
||||
WHERE parent_object_id = OBJECT_ID(N'dbo.b_other_bmfl')
|
||||
AND name = N'CK_b_other_bmfl_module_ref'
|
||||
)
|
||||
EXEC sys.sp_executesql N'
|
||||
ALTER TABLE dbo.b_other_bmfl
|
||||
ADD CONSTRAINT [CK_b_other_bmfl_module_ref]
|
||||
CHECK (
|
||||
(b_node_type = ''category'' AND b_module_code IS NULL)
|
||||
OR (
|
||||
b_node_type = ''module''
|
||||
AND b_module_code IS NOT NULL
|
||||
AND LEN(LTRIM(RTRIM(b_module_code))) > 0
|
||||
)
|
||||
)';
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID(N'dbo.b_other_bmfl')
|
||||
AND name = N'IX_b_other_bmfl_module'
|
||||
)
|
||||
EXEC sys.sp_executesql N'
|
||||
CREATE INDEX [IX_b_other_bmfl_module] ON dbo.b_other_bmfl (b_node_type, b_module_code)';
|
||||
|
||||
EXEC sys.sp_executesql N'
|
||||
DECLARE @CatBasic bigint = 930000000000000101;
|
||||
DECLARE @CatFinance bigint = 930000000000000102;
|
||||
DECLARE @CatLogistics bigint = 930000000000000103;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @CatBasic)
|
||||
INSERT INTO dbo.b_other_bmfl (
|
||||
b_id, b_parent_id, b_name, b_node_type, b_module_code,
|
||||
b_xh, b_canuse
|
||||
)
|
||||
VALUES (@CatBasic, NULL, N''基础信息'', ''category'', NULL, 10, 1);
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @CatFinance)
|
||||
INSERT INTO dbo.b_other_bmfl (
|
||||
b_id, b_parent_id, b_name, b_node_type, b_module_code,
|
||||
b_xh, b_canuse
|
||||
)
|
||||
VALUES (@CatFinance, NULL, N''财务信息'', ''category'', NULL, 20, 1);
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @CatLogistics)
|
||||
INSERT INTO dbo.b_other_bmfl (
|
||||
b_id, b_parent_id, b_name, b_node_type, b_module_code,
|
||||
b_xh, b_canuse
|
||||
)
|
||||
VALUES (@CatLogistics, NULL, N''物流信息'', ''category'', NULL, 30, 1);
|
||||
|
||||
DECLARE @NodePort bigint = 930000000000000201;
|
||||
DECLARE @NodeCity bigint = 930000000000000202;
|
||||
DECLARE @NodeMoney bigint = 930000000000000203;
|
||||
DECLARE @NodeOceanline bigint = 930000000000000204;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodePort)
|
||||
INSERT INTO dbo.b_other_bmfl (
|
||||
b_id, b_parent_id, b_name, b_node_type, b_module_code,
|
||||
b_xh, b_canuse
|
||||
)
|
||||
VALUES (
|
||||
@NodePort, @CatBasic, N''港口'', ''module'', ''d_other_port'', 10, 1
|
||||
);
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodeCity)
|
||||
INSERT INTO dbo.b_other_bmfl (
|
||||
b_id, b_parent_id, b_name, b_node_type, b_module_code,
|
||||
b_xh, b_canuse
|
||||
)
|
||||
VALUES (
|
||||
@NodeCity, @CatBasic, N''城市'', ''module'', ''d_other_city'', 20, 1
|
||||
);
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodeMoney)
|
||||
INSERT INTO dbo.b_other_bmfl (
|
||||
b_id, b_parent_id, b_name, b_node_type, b_module_code,
|
||||
b_xh, b_canuse
|
||||
)
|
||||
VALUES (
|
||||
@NodeMoney, @CatFinance, N''币种'', ''module'', ''d_other_money'', 10, 1
|
||||
);
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodeOceanline)
|
||||
INSERT INTO dbo.b_other_bmfl (
|
||||
b_id, b_parent_id, b_name, b_node_type, b_module_code,
|
||||
b_xh, b_canuse
|
||||
)
|
||||
VALUES (
|
||||
@NodeOceanline, @CatLogistics, N''航线'', ''module'', ''d_other_oceanline'', 10, 1
|
||||
);';
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
@@ -0,0 +1,13 @@
|
||||
/* 删除未使用的旧版其他数据通用表。当前其他数据使用 b_other_bmfl 分类树
|
||||
关联 s_module 数据节点,并由具体基础表保存数据。*/
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
IF OBJECT_ID(N'dbo.b_other', N'U') IS NOT NULL
|
||||
BEGIN
|
||||
DROP TABLE dbo.b_other;
|
||||
END;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
@@ -0,0 +1,29 @@
|
||||
/* 为其他数据分类树增加多语言键。分类节点归属 base_otherdata 页面模块;
|
||||
数据节点名称继续使用其关联 s_module data 节点的 b_i18n。*/
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
IF OBJECT_ID(N'dbo.b_other_bmfl', N'U') IS NOT NULL
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM sys.columns
|
||||
WHERE object_id = OBJECT_ID(N'dbo.b_other_bmfl') AND name = 'b_i18n'
|
||||
)
|
||||
BEGIN
|
||||
ALTER TABLE dbo.b_other_bmfl
|
||||
ADD b_i18n varchar(150) NULL;
|
||||
END;
|
||||
|
||||
IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_module_code') IS NOT NULL
|
||||
BEGIN
|
||||
EXEC sys.sp_executesql N'
|
||||
UPDATE dbo.b_other_bmfl
|
||||
SET b_i18n = ''category.base_otherdata.'' + CAST(b_id AS varchar(30))
|
||||
WHERE b_module_code IS NULL
|
||||
AND (b_i18n IS NULL OR b_i18n = '''')';
|
||||
END;
|
||||
END;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
@@ -0,0 +1,132 @@
|
||||
/* 规范其他数据分类树为引用设计。
|
||||
仅修正目标库元数据结构,不从模块管理同步树节点。*/
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
IF EXISTS (SELECT 1 FROM dbo.s_module WHERE b_code = 'm_base_otherdata')
|
||||
AND NOT EXISTS (SELECT 1 FROM dbo.s_module WHERE b_code = 'base_otherdata')
|
||||
BEGIN
|
||||
UPDATE dbo.s_module
|
||||
SET b_code = 'base_otherdata'
|
||||
WHERE b_code = 'm_base_otherdata';
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.b_other_bmfl', N'U') IS NOT NULL
|
||||
BEGIN
|
||||
IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_node_type') IS NULL
|
||||
BEGIN
|
||||
ALTER TABLE dbo.b_other_bmfl
|
||||
ADD b_node_type varchar(20) NOT NULL
|
||||
CONSTRAINT [DF_b_other_bmfl_node_type] DEFAULT ('category') WITH VALUES;
|
||||
END;
|
||||
|
||||
IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_module_code') IS NULL
|
||||
BEGIN
|
||||
ALTER TABLE dbo.b_other_bmfl
|
||||
ADD b_module_code varchar(100) NULL;
|
||||
END;
|
||||
|
||||
IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_i18n') IS NULL
|
||||
BEGIN
|
||||
ALTER TABLE dbo.b_other_bmfl
|
||||
ADD b_i18n varchar(150) NULL;
|
||||
END;
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID(N'dbo.b_other_bmfl')
|
||||
AND name = N'IX_b_other_bmfl_path'
|
||||
)
|
||||
DROP INDEX [IX_b_other_bmfl_path] ON dbo.b_other_bmfl;
|
||||
|
||||
EXEC sys.sp_executesql N'
|
||||
UPDATE dbo.b_other_bmfl
|
||||
SET b_module_code = NULLIF(LTRIM(RTRIM(COALESCE(b_module_code, ''''))), '''');
|
||||
|
||||
UPDATE dbo.b_other_bmfl
|
||||
SET b_node_type = CASE
|
||||
WHEN b_module_code IS NULL THEN ''category''
|
||||
ELSE ''module''
|
||||
END;
|
||||
|
||||
UPDATE dbo.b_other_bmfl
|
||||
SET b_i18n = ''category.base_otherdata.'' + CAST(b_id AS varchar(30))
|
||||
WHERE b_node_type = ''category''
|
||||
AND (b_i18n IS NULL OR b_i18n = '''');
|
||||
|
||||
UPDATE dbo.b_other_bmfl
|
||||
SET b_i18n = REPLACE(b_i18n, ''category.m_base_otherdata.'', ''category.base_otherdata.'')
|
||||
WHERE b_node_type = ''category''
|
||||
AND b_i18n LIKE ''category.m_base_otherdata.%''';
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM sys.check_constraints
|
||||
WHERE parent_object_id = OBJECT_ID(N'dbo.b_other_bmfl')
|
||||
AND name = N'CK_b_other_bmfl_node_type'
|
||||
)
|
||||
EXEC sys.sp_executesql N'
|
||||
ALTER TABLE dbo.b_other_bmfl
|
||||
ADD CONSTRAINT [CK_b_other_bmfl_node_type]
|
||||
CHECK (b_node_type IN (''category'', ''module''))';
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM sys.check_constraints
|
||||
WHERE parent_object_id = OBJECT_ID(N'dbo.b_other_bmfl')
|
||||
AND name = N'CK_b_other_bmfl_module_ref'
|
||||
)
|
||||
EXEC sys.sp_executesql N'
|
||||
ALTER TABLE dbo.b_other_bmfl
|
||||
ADD CONSTRAINT [CK_b_other_bmfl_module_ref]
|
||||
CHECK (
|
||||
(b_node_type = ''category'' AND b_module_code IS NULL)
|
||||
OR (
|
||||
b_node_type = ''module''
|
||||
AND b_module_code IS NOT NULL
|
||||
AND LEN(LTRIM(RTRIM(b_module_code))) > 0
|
||||
)
|
||||
)';
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID(N'dbo.b_other_bmfl')
|
||||
AND name = N'IX_b_other_bmfl_module'
|
||||
)
|
||||
EXEC sys.sp_executesql N'
|
||||
CREATE INDEX [IX_b_other_bmfl_module] ON dbo.b_other_bmfl (b_node_type, b_module_code)';
|
||||
|
||||
DECLARE @DropSql nvarchar(max);
|
||||
|
||||
IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_level') IS NOT NULL
|
||||
BEGIN
|
||||
SET @DropSql = NULL;
|
||||
SELECT @DropSql = N'ALTER TABLE dbo.b_other_bmfl DROP CONSTRAINT [' + REPLACE(dc.name, N']', N']]') + N']'
|
||||
FROM sys.default_constraints dc
|
||||
JOIN sys.columns c
|
||||
ON c.object_id = dc.parent_object_id
|
||||
AND c.column_id = dc.parent_column_id
|
||||
WHERE dc.parent_object_id = OBJECT_ID(N'dbo.b_other_bmfl')
|
||||
AND c.name = N'b_level';
|
||||
IF @DropSql IS NOT NULL EXEC sys.sp_executesql @DropSql;
|
||||
|
||||
EXEC sys.sp_executesql N'ALTER TABLE dbo.b_other_bmfl DROP COLUMN b_level';
|
||||
END;
|
||||
|
||||
IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_path') IS NOT NULL
|
||||
BEGIN
|
||||
SET @DropSql = NULL;
|
||||
SELECT @DropSql = N'ALTER TABLE dbo.b_other_bmfl DROP CONSTRAINT [' + REPLACE(dc.name, N']', N']]') + N']'
|
||||
FROM sys.default_constraints dc
|
||||
JOIN sys.columns c
|
||||
ON c.object_id = dc.parent_object_id
|
||||
AND c.column_id = dc.parent_column_id
|
||||
WHERE dc.parent_object_id = OBJECT_ID(N'dbo.b_other_bmfl')
|
||||
AND c.name = N'b_path';
|
||||
IF @DropSql IS NOT NULL EXEC sys.sp_executesql @DropSql;
|
||||
|
||||
EXEC sys.sp_executesql N'ALTER TABLE dbo.b_other_bmfl DROP COLUMN b_path';
|
||||
END;
|
||||
END;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
Reference in new issue
Block a user