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;