Files
workspace/code/fms/fms-api/config/migrations/011_migrate_othercompany.sql
T
2026-07-29 23:18:54 +08:00

155 lines
5.5 KiB
Transact-SQL

SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRANSACTION;
IF OBJECT_ID(N'dbo.b_othercompany', N'U') IS NULL
BEGIN
CREATE TABLE dbo.b_othercompany (
b_id varchar(50) NOT NULL,
b_pycode nvarchar(50) NULL,
b_type varchar(200) NULL,
b_name nvarchar(500) NULL,
b_shortname nvarchar(50) NULL,
b_linkman nvarchar(200) NULL,
b_phone nvarchar(500) NULL,
b_addr nvarchar(500) NULL,
b_firstlinkdate datetime NULL,
b_htno nvarchar(50) NULL,
b_htdate date NULL,
b_htexpiredate date NULL,
b_black varchar(1) NULL,
b_canuse varchar(1) NULL,
b_zl int NULL,
b_tel nvarchar(50) NULL,
b_fax nvarchar(500) NULL,
b_www nvarchar(50) NULL,
b_email nvarchar(50) NULL,
b_bankacount nvarchar(500) NULL,
b_invaccount nvarchar(500) NULL,
b_cate_id nvarchar(500) NULL,
b_bz1 nvarchar(500) NULL,
b_bz2 nvarchar(500) NULL,
b_bz3 nvarchar(500) NULL,
b_bz4 nvarchar(500) NULL,
b_province nvarchar(50) NULL,
b_city nvarchar(50) NULL,
b_area nvarchar(50) NULL,
b_country nvarchar(50) NULL,
b_edicode nvarchar(50) NULL,
b_showcolor int NULL,
b_type_id nvarchar(200) NULL,
b_from_id nvarchar(50) NULL,
b_type1_id nvarchar(50) NULL,
b_type2_id nvarchar(50) NULL,
b_type3_id nvarchar(50) NULL,
b_type4_id nvarchar(50) NULL,
b_type5_id nvarchar(50) NULL,
b_owner_id varchar(50) NULL,
b_inputuser_id varchar(50) NULL,
b_inputdatetime datetime NULL,
b_updateuser_id varchar(50) NULL,
b_updatedatetime datetime NULL,
b_password varchar(50) NULL,
b_state nvarchar(50) NULL,
b_bankacount_e nvarchar(500) NULL,
b_addr_e nvarchar(500) NULL,
b_name_e nvarchar(500) NULL,
CONSTRAINT PK_b_othercompany PRIMARY KEY (b_id)
);
CREATE INDEX IX_b_othercompany_name
ON dbo.b_othercompany (b_name, b_id);
CREATE INDEX IX_b_othercompany_pycode
ON dbo.b_othercompany (b_pycode, b_id);
CREATE INDEX IX_b_othercompany_owner
ON dbo.b_othercompany (b_owner_id, b_id);
END;
IF NOT EXISTS (
SELECT 1
FROM sys.indexes
WHERE object_id = OBJECT_ID(N'dbo.b_othercompany')
AND name = N'IX_b_othercompany_category'
)
CREATE INDEX IX_b_othercompany_category
ON dbo.b_othercompany (b_cate_id, b_id);
DECLARE @RebuildCategory bit = 0;
DECLARE @CategoryObjectId int = OBJECT_ID(N'dbo.b_othercompany_bmfl', N'U');
IF @CategoryObjectId IS NULL
SET @RebuildCategory = 1;
ELSE IF EXISTS (
SELECT 1
FROM sys.columns
WHERE object_id = @CategoryObjectId
AND name IN (
N'mc_a', N'bm_b', N'mc_b', N'js',
N'bm_1_b', N'mc_1_b', N'bm_2_b', N'mc_2_b',
N'bm_3_b', N'mc_3_b', N'bm_4_b', N'mc_4_b',
N'bm_5_b', N'mc_5_b', N'bm_6_b', N'mc_6_b'
)
)
SET @RebuildCategory = 1;
ELSE IF NOT EXISTS (
SELECT 1
FROM sys.columns
WHERE object_id = @CategoryObjectId
AND name = N'b_id'
AND system_type_id = TYPE_ID(N'bigint')
)
SET @RebuildCategory = 1;
ELSE IF EXISTS (
SELECT required.name
FROM (VALUES
(N'b_id'), (N'b_parent_id'), (N'b_code'), (N'b_name'),
(N'b_level'), (N'b_path'), (N'b_xh'), (N'b_canuse'),
(N'b_inputuser_id'), (N'b_inputdatetime'),
(N'b_updateuser_id'), (N'b_updatedatetime')
) AS required(name)
WHERE NOT EXISTS (
SELECT 1
FROM sys.columns AS actual
WHERE actual.object_id = @CategoryObjectId
AND actual.name = required.name
)
)
SET @RebuildCategory = 1;
IF @RebuildCategory = 1
BEGIN
DELETE FROM dbo.b_othercompany;
IF @CategoryObjectId IS NOT NULL
DROP TABLE dbo.b_othercompany_bmfl;
CREATE TABLE dbo.b_othercompany_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_othercompany_bmfl_level DEFAULT (1),
b_path varchar(1000) NOT NULL,
b_xh int NOT NULL CONSTRAINT DF_b_othercompany_bmfl_xh DEFAULT (0),
b_canuse int NOT NULL CONSTRAINT DF_b_othercompany_bmfl_canuse DEFAULT (1),
b_inputuser_id bigint NULL,
b_inputdatetime datetime NULL,
b_updateuser_id bigint NULL,
b_updatedatetime datetime NULL,
CONSTRAINT PK_b_othercompany_bmfl PRIMARY KEY (b_id),
CONSTRAINT CK_b_othercompany_bmfl_level CHECK (b_level >= 1),
CONSTRAINT CK_b_othercompany_bmfl_parent CHECK (
b_parent_id IS NULL OR b_parent_id <> b_id
),
CONSTRAINT FK_b_othercompany_bmfl_parent FOREIGN KEY (b_parent_id)
REFERENCES dbo.b_othercompany_bmfl (b_id)
);
CREATE INDEX IX_b_othercompany_bmfl_parent
ON dbo.b_othercompany_bmfl (b_parent_id, b_xh, b_id);
CREATE INDEX IX_b_othercompany_bmfl_path
ON dbo.b_othercompany_bmfl (b_path, b_xh, b_id);
END;
COMMIT TRANSACTION;