20260821173417
This commit is contained in:
1 parent
45854b0570
commit
2e5d532f23
19 files changed
+1495
-93
No files matched your search
@@ -0,0 +1,509 @@
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
IF DB_NAME() <> N'FMS-NEW'
|
||||
THROW 51000, N'This migration can only run against FMS-NEW.', 1;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
IF OBJECT_ID(N'dbo.b_user', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.b_user (
|
||||
b_id bigint NOT NULL,
|
||||
b_account nvarchar(50) NOT NULL,
|
||||
b_name nvarchar(50) NULL,
|
||||
b_department nvarchar(50) NULL,
|
||||
b_subcode nvarchar(50) NULL,
|
||||
b_machineid nvarchar(50) NULL,
|
||||
b_bz nvarchar(200) NULL,
|
||||
b_password nvarchar(255) NOT NULL,
|
||||
b_canuse tinyint NOT NULL CONSTRAINT DF_b_user_canuse DEFAULT (1),
|
||||
b_othermachinelogin tinyint NOT NULL CONSTRAINT DF_b_user_othermachinelogin DEFAULT (0),
|
||||
b_salesman tinyint NOT NULL CONSTRAINT DF_b_user_salesman DEFAULT (0),
|
||||
b_docman tinyint NOT NULL CONSTRAINT DF_b_user_docman DEFAULT (0),
|
||||
b_dealman tinyint NOT NULL CONSTRAINT DF_b_user_dealman DEFAULT (0),
|
||||
b_receivelevel tinyint NULL,
|
||||
b_paylevel tinyint NULL,
|
||||
b_visible_customer tinyint NOT NULL CONSTRAINT DF_b_user_visible_customer DEFAULT (0),
|
||||
b_visible_supply tinyint NOT NULL CONSTRAINT DF_b_user_visible_supply DEFAULT (0),
|
||||
b_levelvisible tinyint NOT NULL CONSTRAINT DF_b_user_levelvisible DEFAULT (0),
|
||||
b_fromcustomer tinyint NOT NULL CONSTRAINT DF_b_user_fromcustomer DEFAULT (0),
|
||||
b_logintime tinyint NOT NULL CONSTRAINT DF_b_user_logintime DEFAULT (0),
|
||||
b_checkxy tinyint NOT NULL CONSTRAINT DF_b_user_checkxy DEFAULT (0),
|
||||
b_loginfee tinyint NOT NULL CONSTRAINT DF_b_user_loginfee DEFAULT (0),
|
||||
b_phone nvarchar(50) NULL,
|
||||
CONSTRAINT PK_b_user PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_b_user_account UNIQUE (b_account)
|
||||
);
|
||||
END;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.b_user)
|
||||
BEGIN
|
||||
INSERT INTO dbo.b_user (
|
||||
b_id, b_account, b_name, b_department, b_subcode, b_machineid, b_bz,
|
||||
b_password, b_canuse, b_othermachinelogin, b_salesman, b_docman, b_dealman,
|
||||
b_receivelevel, b_paylevel, b_visible_customer, b_visible_supply, b_levelvisible,
|
||||
b_fromcustomer, b_logintime, b_checkxy, b_loginfee, b_phone
|
||||
)
|
||||
SELECT
|
||||
b_id, b_account, b_name, b_department, b_subcode, b_machineid, b_bz,
|
||||
b_password, b_canuse, b_othermachinelogin, b_salesman, b_docman, b_dealman,
|
||||
b_receivelevel, b_paylevel, b_visible_customer, b_visible_supply, b_levelvisible,
|
||||
b_fromcustomer, b_logintime, b_checkxy, b_loginfee, b_phone
|
||||
FROM [FMS].dbo.b_user;
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_module', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_module (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_code varchar(50) NOT NULL,
|
||||
b_parent_id bigint NULL,
|
||||
b_name nvarchar(100) NOT NULL,
|
||||
b_i18n varchar(150) NULL,
|
||||
b_module_type varchar(20) NOT NULL,
|
||||
b_viewtable varchar(128) NULL,
|
||||
b_savetable varchar(128) NULL,
|
||||
b_keyfield varchar(50) NULL,
|
||||
b_orderfield varchar(500) NULL,
|
||||
b_delete_policy varchar(20) NULL,
|
||||
b_canuse int NOT NULL CONSTRAINT DF_s_module_canuse DEFAULT (1),
|
||||
b_xh int NOT NULL CONSTRAINT DF_s_module_xh DEFAULT (0),
|
||||
b_bz nvarchar(1000) NULL,
|
||||
b_inputuser_id bigint NULL,
|
||||
b_inputdatetime datetime2 NULL CONSTRAINT DF_s_module_inputdatetime DEFAULT (SYSUTCDATETIME()),
|
||||
b_updateuser_id bigint NULL,
|
||||
b_updatedatetime datetime2 NULL,
|
||||
CONSTRAINT PK_s_module PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_s_module_code UNIQUE (b_code),
|
||||
CONSTRAINT CK_s_module_type CHECK (b_module_type IN ('category','data','query')),
|
||||
CONSTRAINT CK_s_module_delete_policy CHECK (b_delete_policy IS NULL OR b_delete_policy IN ('restrict','lifecycle','hard')),
|
||||
CONSTRAINT CK_s_module_config CHECK (
|
||||
(b_module_type = 'category' AND b_viewtable IS NULL AND b_savetable IS NULL AND b_keyfield IS NULL AND b_orderfield IS NULL AND b_delete_policy IS NULL)
|
||||
OR (b_module_type = 'data' AND b_viewtable IS NOT NULL AND b_savetable IS NOT NULL AND b_keyfield IS NOT NULL AND b_delete_policy IS NOT NULL)
|
||||
OR (b_module_type = 'query' AND b_viewtable IS NOT NULL AND b_savetable IS NULL AND b_delete_policy IS NULL)
|
||||
),
|
||||
CONSTRAINT CK_s_module_parent CHECK (b_parent_id IS NULL OR b_parent_id <> b_id)
|
||||
);
|
||||
CREATE INDEX IX_s_module_parent ON dbo.s_module (b_parent_id, b_xh, b_canuse, b_id);
|
||||
CREATE INDEX IX_s_module_savetable ON dbo.s_module (b_savetable);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_field', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_field (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_field varchar(50) NOT NULL,
|
||||
b_name nvarchar(100) NOT NULL,
|
||||
b_i18n varchar(150) NULL,
|
||||
b_type varchar(30) NOT NULL,
|
||||
b_dbtype varchar(30) NOT NULL,
|
||||
b_length int NULL,
|
||||
b_precision int NULL,
|
||||
b_scale int NULL,
|
||||
b_nullable int NOT NULL CONSTRAINT DF_s_field_nullable DEFAULT (1),
|
||||
b_default_value nvarchar(500) NULL,
|
||||
b_db_default nvarchar(500) NULL,
|
||||
b_writemode varchar(20) NOT NULL CONSTRAINT DF_s_field_writemode DEFAULT ('direct'),
|
||||
b_options nvarchar(max) NULL,
|
||||
b_canuse int NOT NULL CONSTRAINT DF_s_field_canuse DEFAULT (1),
|
||||
b_inputuser_id bigint NULL,
|
||||
b_inputdatetime datetime2 NULL CONSTRAINT DF_s_field_inputdatetime DEFAULT (SYSUTCDATETIME()),
|
||||
b_updateuser_id bigint NULL,
|
||||
b_updatedatetime datetime2 NULL,
|
||||
CONSTRAINT PK_s_field PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_s_field_module_field UNIQUE (b_module_id, b_field),
|
||||
CONSTRAINT UQ_s_field_module_id UNIQUE (b_module_id, b_id),
|
||||
CONSTRAINT CK_s_field_type CHECK (b_type IN ('input','textarea','number','money','date','datetime','checkbox','select','selectId')),
|
||||
CONSTRAINT CK_s_field_dbtype CHECK (b_dbtype IN ('varchar','nvarchar','char','nchar','int','bigint','smallint','tinyint','decimal','numeric','float','real','date','datetime','datetime2','bit','text','ntext','uniqueidentifier')),
|
||||
CONSTRAINT CK_s_field_writemode CHECK (b_writemode IN ('direct','createOnly','readOnly','computed','system'))
|
||||
);
|
||||
CREATE INDEX IX_s_field_module ON dbo.s_field (b_module_id, b_canuse, b_id);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_field_group', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_field_group (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_parent_id bigint NULL,
|
||||
b_title nvarchar(100) NOT NULL,
|
||||
b_i18n varchar(150) NULL,
|
||||
b_xh int NOT NULL CONSTRAINT DF_s_field_group_xh DEFAULT (0),
|
||||
b_canuse int NOT NULL CONSTRAINT DF_s_field_group_canuse DEFAULT (1),
|
||||
CONSTRAINT PK_s_field_group PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_s_field_group_module_id UNIQUE (b_module_id, b_id),
|
||||
CONSTRAINT CK_s_field_group_parent CHECK (b_parent_id IS NULL OR b_parent_id <> b_id)
|
||||
);
|
||||
CREATE INDEX IX_s_field_group_module ON dbo.s_field_group (b_module_id, b_xh, b_canuse);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_field_view', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_field_view (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_field_id bigint NOT NULL,
|
||||
b_group_id bigint NULL,
|
||||
b_i18n varchar(150) NULL,
|
||||
b_visible int NOT NULL CONSTRAINT DF_s_field_view_visible DEFAULT (1),
|
||||
b_xh int NOT NULL CONSTRAINT DF_s_field_view_xh DEFAULT (0),
|
||||
b_width int NULL,
|
||||
CONSTRAINT PK_s_field_view PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_s_field_view_field UNIQUE (b_module_id, b_field_id)
|
||||
);
|
||||
CREATE INDEX IX_s_field_view_order ON dbo.s_field_view (b_xh, b_id);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_field_edit', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_field_edit (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_field_id bigint NOT NULL,
|
||||
b_group_id bigint NULL,
|
||||
b_visible int NOT NULL CONSTRAINT DF_s_field_edit_visible DEFAULT (1),
|
||||
b_required int NOT NULL CONSTRAINT DF_s_field_edit_required DEFAULT (0),
|
||||
b_readonly int NOT NULL CONSTRAINT DF_s_field_edit_readonly DEFAULT (0),
|
||||
b_disabled int NOT NULL CONSTRAINT DF_s_field_edit_disabled DEFAULT (0),
|
||||
b_xh int NOT NULL CONSTRAINT DF_s_field_edit_xh DEFAULT (0),
|
||||
CONSTRAINT PK_s_field_edit PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_s_field_edit_field UNIQUE (b_module_id, b_field_id)
|
||||
);
|
||||
CREATE INDEX IX_s_field_edit_order ON dbo.s_field_edit (b_xh, b_id);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_field_query', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_field_query (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_field_module_id bigint NOT NULL,
|
||||
b_field_id bigint NOT NULL,
|
||||
b_relation_id bigint NULL,
|
||||
b_component varchar(30) NULL,
|
||||
b_condition_no int NOT NULL CONSTRAINT DF_s_field_query_condition_no DEFAULT (1),
|
||||
b_operator varchar(20) NOT NULL,
|
||||
b_default_value nvarchar(500) NULL,
|
||||
b_canuse int NOT NULL CONSTRAINT DF_s_field_query_canuse DEFAULT (1),
|
||||
b_xh int NOT NULL CONSTRAINT DF_s_field_query_xh DEFAULT (0),
|
||||
CONSTRAINT PK_s_field_query PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_s_field_query_condition UNIQUE (b_module_id, b_field_module_id, b_field_id, b_relation_id, b_operator, b_condition_no),
|
||||
CONSTRAINT CK_s_field_query_condition_no CHECK (b_condition_no > 0)
|
||||
);
|
||||
CREATE INDEX IX_s_field_query_order ON dbo.s_field_query (b_canuse, b_xh, b_id);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_relation', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_relation (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_code varchar(50) NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_target_module_id bigint NOT NULL,
|
||||
b_relation_type varchar(20) NOT NULL,
|
||||
b_module_field_id bigint NOT NULL,
|
||||
b_target_field_id bigint NOT NULL,
|
||||
b_foreign_side varchar(10) NULL,
|
||||
b_junction_module_id bigint NULL,
|
||||
b_junction_module_field_id bigint NULL,
|
||||
b_junction_target_field_id bigint NULL,
|
||||
b_ownership varchar(20) NOT NULL CONSTRAINT DF_s_relation_ownership DEFAULT ('reference'),
|
||||
b_owner_side varchar(10) NULL,
|
||||
b_delete_policy varchar(20) NULL,
|
||||
b_order_module_id bigint NULL,
|
||||
b_order_field_id bigint NULL,
|
||||
b_canuse int NOT NULL CONSTRAINT DF_s_relation_canuse DEFAULT (1),
|
||||
b_xh int NOT NULL CONSTRAINT DF_s_relation_xh DEFAULT (0),
|
||||
CONSTRAINT PK_s_relation PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_s_relation_code UNIQUE (b_code),
|
||||
CONSTRAINT UQ_s_relation_key UNIQUE (b_module_id, b_target_module_id, b_module_field_id, b_target_field_id),
|
||||
CONSTRAINT CK_s_relation_self_fields CHECK (b_module_id <> b_target_module_id OR b_module_field_id <> b_target_field_id),
|
||||
CONSTRAINT CK_s_relation_type CHECK (b_relation_type IN ('one-to-one','one-to-many','many-to-one','many-to-many')),
|
||||
CONSTRAINT CK_s_relation_foreign_side CHECK (b_foreign_side IS NULL OR b_foreign_side IN ('module','target')),
|
||||
CONSTRAINT CK_s_relation_ownership CHECK (b_ownership IN ('reference','owned')),
|
||||
CONSTRAINT CK_s_relation_owner_side CHECK (b_owner_side IS NULL OR b_owner_side IN ('module','target')),
|
||||
CONSTRAINT CK_s_relation_shape CHECK (
|
||||
(b_relation_type = 'many-to-many' AND b_foreign_side IS NULL AND b_junction_module_id IS NOT NULL AND b_junction_module_field_id IS NOT NULL AND b_junction_target_field_id IS NOT NULL)
|
||||
OR (b_relation_type <> 'many-to-many' AND b_foreign_side IS NOT NULL AND b_junction_module_id IS NULL AND b_junction_module_field_id IS NULL AND b_junction_target_field_id IS NULL)
|
||||
),
|
||||
CONSTRAINT CK_s_relation_owned CHECK ((b_ownership = 'reference' AND b_owner_side IS NULL) OR (b_ownership = 'owned' AND b_owner_side IS NOT NULL AND b_relation_type <> 'many-to-many')),
|
||||
CONSTRAINT CK_s_relation_order CHECK ((b_order_module_id IS NULL AND b_order_field_id IS NULL) OR (b_order_module_id IS NOT NULL AND b_order_field_id IS NOT NULL)),
|
||||
CONSTRAINT CK_s_relation_delete_policy CHECK (b_delete_policy IS NULL OR b_delete_policy IN ('restrict','set-null','cascade','archive'))
|
||||
);
|
||||
CREATE INDEX IX_s_relation_target ON dbo.s_relation (b_target_module_id);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_menu', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_menu (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_parent_id bigint NULL,
|
||||
b_code varchar(50) NOT NULL,
|
||||
b_name nvarchar(100) NOT NULL,
|
||||
b_i18n varchar(150) NULL,
|
||||
b_menu_type varchar(20) NOT NULL,
|
||||
b_route varchar(200) NULL,
|
||||
b_module_id bigint NULL,
|
||||
b_power_code varchar(50) NULL,
|
||||
b_icon varchar(50) NULL,
|
||||
b_xh int NOT NULL CONSTRAINT DF_s_menu_xh DEFAULT (0),
|
||||
b_canuse int NOT NULL CONSTRAINT DF_s_menu_canuse DEFAULT (1),
|
||||
CONSTRAINT PK_s_menu PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_s_menu_code UNIQUE (b_code),
|
||||
CONSTRAINT CK_s_menu_parent CHECK (b_parent_id IS NULL OR b_parent_id <> b_id),
|
||||
CONSTRAINT CK_s_menu_type CHECK (b_menu_type IN ('directory','page','data','external'))
|
||||
);
|
||||
CREATE INDEX IX_s_menu_parent ON dbo.s_menu (b_parent_id, b_xh, b_canuse);
|
||||
CREATE INDEX IX_s_menu_module ON dbo.s_menu (b_module_id);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_autocode', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_autocode (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_field_id bigint NOT NULL,
|
||||
b_prefix nvarchar(100) NOT NULL CONSTRAINT DF_s_autocode_prefix DEFAULT (N''),
|
||||
b_dateformat varchar(30) NOT NULL CONSTRAINT DF_s_autocode_dateformat DEFAULT ('yyyyMM'),
|
||||
b_separator nvarchar(10) NOT NULL CONSTRAINT DF_s_autocode_separator DEFAULT (N'-'),
|
||||
b_seqwidth int NOT NULL CONSTRAINT DF_s_autocode_seqwidth DEFAULT (5),
|
||||
b_resettype varchar(10) NOT NULL CONSTRAINT DF_s_autocode_resettype DEFAULT ('month'),
|
||||
b_startvalue bigint NOT NULL CONSTRAINT DF_s_autocode_startvalue DEFAULT (1),
|
||||
b_currentperiod varchar(8) NULL,
|
||||
b_currentvalue bigint NOT NULL CONSTRAINT DF_s_autocode_currentvalue DEFAULT (0),
|
||||
b_canuse int NOT NULL CONSTRAINT DF_s_autocode_canuse DEFAULT (1),
|
||||
CONSTRAINT PK_s_autocode PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_s_autocode_module_field UNIQUE (b_module_id, b_field_id),
|
||||
CONSTRAINT CK_s_autocode_resettype CHECK (b_resettype IN ('none','day','month','year')),
|
||||
CONSTRAINT CK_s_autocode_values CHECK (b_seqwidth > 0 AND b_startvalue >= 0 AND b_currentvalue >= 0)
|
||||
);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_role', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_role (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_code varchar(50) NOT NULL,
|
||||
b_name nvarchar(100) NOT NULL,
|
||||
b_i18n varchar(150) NULL,
|
||||
b_remark nvarchar(500) NULL,
|
||||
b_is_system int NOT NULL CONSTRAINT DF_s_role_is_system DEFAULT (0),
|
||||
b_bypass_power int NOT NULL CONSTRAINT DF_s_role_bypass_power DEFAULT (0),
|
||||
b_canuse int NOT NULL CONSTRAINT DF_s_role_canuse DEFAULT (1),
|
||||
b_inputuser_id bigint NULL,
|
||||
b_inputdatetime datetime2 NULL CONSTRAINT DF_s_role_inputdatetime DEFAULT (SYSUTCDATETIME()),
|
||||
b_updateuser_id bigint NULL,
|
||||
b_updatedatetime datetime2 NULL,
|
||||
CONSTRAINT PK_s_role PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_s_role_code UNIQUE (b_code),
|
||||
CONSTRAINT CK_s_role_system_bypass CHECK (b_bypass_power = 0 OR b_is_system = 1)
|
||||
);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_user_role', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_user_role (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_user_id bigint NOT NULL,
|
||||
b_role_id bigint NOT NULL,
|
||||
b_canuse int NOT NULL CONSTRAINT DF_s_user_role_canuse DEFAULT (1),
|
||||
b_inputdatetime datetime2 NULL CONSTRAINT DF_s_user_role_inputdatetime DEFAULT (SYSUTCDATETIME()),
|
||||
CONSTRAINT PK_s_user_role PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_s_user_role UNIQUE (b_user_id, b_role_id)
|
||||
);
|
||||
CREATE INDEX IX_s_user_role_role ON dbo.s_user_role (b_role_id, b_canuse);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_power', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_power (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_code varchar(50) NOT NULL,
|
||||
b_name nvarchar(100) NOT NULL,
|
||||
b_i18n varchar(150) NULL,
|
||||
b_power_type varchar(20) NOT NULL,
|
||||
b_resource varchar(128) NULL,
|
||||
b_module_id bigint NULL,
|
||||
b_field_id bigint NULL,
|
||||
b_operation varchar(30) NOT NULL,
|
||||
b_canuse int NOT NULL CONSTRAINT DF_s_power_canuse DEFAULT (1),
|
||||
b_xh int NOT NULL CONSTRAINT DF_s_power_xh DEFAULT (0),
|
||||
CONSTRAINT PK_s_power PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_s_power_code UNIQUE (b_code),
|
||||
CONSTRAINT CK_s_power_type CHECK (b_power_type IN ('menu','module','action','field')),
|
||||
CONSTRAINT CK_s_power_shape CHECK (
|
||||
(b_power_type = 'menu' AND b_resource IS NOT NULL AND b_module_id IS NULL AND b_field_id IS NULL AND b_operation = 'access')
|
||||
OR (b_power_type = 'module' AND b_resource IS NULL AND b_module_id IS NOT NULL AND b_field_id IS NULL AND b_operation IN ('read','create','update','delete','export'))
|
||||
OR (b_power_type = 'action' AND b_resource IS NOT NULL AND b_module_id IS NOT NULL AND b_field_id IS NULL AND b_operation = 'execute')
|
||||
OR (b_power_type = 'field' AND b_resource IS NULL AND b_module_id IS NOT NULL AND b_field_id IS NOT NULL AND b_operation IN ('view','edit'))
|
||||
)
|
||||
);
|
||||
CREATE INDEX IX_s_power_resource ON dbo.s_power (b_power_type, b_resource, b_canuse);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_role_power', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_role_power (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_role_id bigint NOT NULL,
|
||||
b_power_id bigint NOT NULL,
|
||||
b_effect varchar(10) NOT NULL CONSTRAINT DF_s_role_power_effect DEFAULT ('allow'),
|
||||
b_canuse int NOT NULL CONSTRAINT DF_s_role_power_canuse DEFAULT (1),
|
||||
b_inputdatetime datetime2 NULL CONSTRAINT DF_s_role_power_inputdatetime DEFAULT (SYSUTCDATETIME()),
|
||||
CONSTRAINT PK_s_role_power PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_s_role_power UNIQUE (b_role_id, b_power_id),
|
||||
CONSTRAINT CK_s_role_power_effect CHECK (b_effect IN ('allow','deny'))
|
||||
);
|
||||
CREATE INDEX IX_s_role_power_power ON dbo.s_role_power (b_power_id, b_canuse);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_role_scope', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_role_scope (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_role_id bigint NOT NULL,
|
||||
b_module_id bigint NOT NULL,
|
||||
b_operation varchar(20) NOT NULL,
|
||||
b_scope_type varchar(30) NOT NULL,
|
||||
b_scope_no int NOT NULL CONSTRAINT DF_s_role_scope_no DEFAULT (1),
|
||||
b_scope_field_id bigint NULL,
|
||||
b_scope_value nvarchar(max) NULL,
|
||||
b_canuse int NOT NULL CONSTRAINT DF_s_role_scope_canuse DEFAULT (1),
|
||||
b_inputdatetime datetime2 NULL CONSTRAINT DF_s_role_scope_inputdatetime DEFAULT (SYSUTCDATETIME()),
|
||||
CONSTRAINT PK_s_role_scope PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_s_role_scope UNIQUE (b_role_id, b_module_id, b_operation, b_scope_type, b_scope_field_id, b_scope_no),
|
||||
CONSTRAINT CK_s_role_scope_operation CHECK (b_operation IN ('read','update','delete','export')),
|
||||
CONSTRAINT CK_s_role_scope_type CHECK (b_scope_type IN ('all','creator','owner','department','department-tree','custom')),
|
||||
CONSTRAINT CK_s_role_scope_no CHECK (b_scope_no > 0),
|
||||
CONSTRAINT CK_s_role_scope_shape CHECK (
|
||||
(b_scope_type IN ('all','creator') AND b_scope_field_id IS NULL AND b_scope_value IS NULL)
|
||||
OR (b_scope_type IN ('owner','department','department-tree') AND b_scope_field_id IS NOT NULL)
|
||||
OR (b_scope_type = 'custom' AND b_scope_value IS NOT NULL)
|
||||
)
|
||||
);
|
||||
CREATE INDEX IX_s_role_scope_role ON dbo.s_role_scope (b_role_id, b_module_id, b_operation, b_canuse);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_i18n', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_i18n (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_key varchar(150) NOT NULL,
|
||||
b_locale varchar(20) NOT NULL,
|
||||
b_value nvarchar(500) NOT NULL,
|
||||
b_i18ntype varchar(20) NULL,
|
||||
b_canuse int NOT NULL CONSTRAINT DF_s_i18n_canuse DEFAULT (1),
|
||||
CONSTRAINT PK_s_i18n PRIMARY KEY (b_id),
|
||||
CONSTRAINT UQ_s_i18n_key_locale UNIQUE (b_key, b_locale)
|
||||
);
|
||||
CREATE INDEX IX_s_i18n_locale ON dbo.s_i18n (b_locale, b_canuse);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_log_technical', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_log_technical (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_org_id varchar(50) NULL,
|
||||
b_user_id bigint NULL,
|
||||
b_account varchar(50) NULL,
|
||||
b_sourcetype varchar(20) NULL,
|
||||
b_loglevel varchar(16) NOT NULL,
|
||||
b_logcategory varchar(64) NULL,
|
||||
b_operation varchar(100) NULL,
|
||||
b_module_code varchar(50) NULL,
|
||||
b_request_id varchar(64) NULL,
|
||||
b_trace_id varchar(64) NULL,
|
||||
b_server_node varchar(128) NULL,
|
||||
b_duration_ms bigint NULL,
|
||||
b_result_code varchar(50) NULL,
|
||||
b_error_code varchar(50) NULL,
|
||||
b_error_message nvarchar(2000) NULL,
|
||||
b_exception_text nvarchar(max) NULL,
|
||||
b_context_text nvarchar(max) NULL,
|
||||
b_occurdatetime datetime2 NULL CONSTRAINT DF_s_log_technical_occurdatetime DEFAULT (SYSUTCDATETIME()),
|
||||
CONSTRAINT PK_s_log_technical PRIMARY KEY (b_id)
|
||||
);
|
||||
CREATE INDEX IX_s_log_technical_trace ON dbo.s_log_technical (b_trace_id, b_occurdatetime DESC);
|
||||
CREATE INDEX IX_s_log_technical_org ON dbo.s_log_technical (b_org_id, b_occurdatetime DESC);
|
||||
CREATE INDEX IX_s_log_technical_level ON dbo.s_log_technical (b_loglevel, b_occurdatetime DESC);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_log_login', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_log_login (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_org_id varchar(50) NULL,
|
||||
b_user_id bigint NULL,
|
||||
b_account varchar(50) NULL,
|
||||
b_login_type varchar(20) NOT NULL,
|
||||
b_login_result int NOT NULL CONSTRAINT DF_s_log_login_result DEFAULT (0),
|
||||
b_fail_reason nvarchar(200) NULL,
|
||||
b_ip varchar(50) NULL,
|
||||
b_ip_location nvarchar(200) NULL,
|
||||
b_browser varchar(100) NULL,
|
||||
b_browser_version varchar(50) NULL,
|
||||
b_os varchar(100) NULL,
|
||||
b_os_version varchar(50) NULL,
|
||||
b_device_type varchar(20) NULL,
|
||||
b_user_agent nvarchar(max) NULL,
|
||||
b_session_id varchar(50) NULL,
|
||||
b_request_id varchar(64) NULL,
|
||||
b_trace_id varchar(64) NULL,
|
||||
b_occurdatetime datetime2 NULL CONSTRAINT DF_s_log_login_occurdatetime DEFAULT (SYSUTCDATETIME()),
|
||||
CONSTRAINT PK_s_log_login PRIMARY KEY (b_id)
|
||||
);
|
||||
CREATE INDEX IX_s_log_login_user ON dbo.s_log_login (b_user_id, b_occurdatetime DESC);
|
||||
CREATE INDEX IX_s_log_login_account ON dbo.s_log_login (b_account, b_occurdatetime DESC);
|
||||
CREATE INDEX IX_s_log_login_result ON dbo.s_log_login (b_login_result, b_occurdatetime DESC);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_log_audit', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_log_audit (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_event_code varchar(50) NOT NULL,
|
||||
b_module_code varchar(50) NULL,
|
||||
b_data_id varchar(50) NULL,
|
||||
b_business_no varchar(50) NULL,
|
||||
b_operation varchar(100) NULL,
|
||||
b_operator_id bigint NULL,
|
||||
b_operator_name nvarchar(100) NULL,
|
||||
b_source_type varchar(20) NOT NULL CONSTRAINT DF_s_log_audit_source_type DEFAULT ('user'),
|
||||
b_visibility varchar(20) NOT NULL CONSTRAINT DF_s_log_audit_visibility DEFAULT ('internal'),
|
||||
b_request_id varchar(64) NULL,
|
||||
b_trace_id varchar(64) NULL,
|
||||
b_payload_text nvarchar(max) NULL,
|
||||
b_occurdatetime datetime2 NULL CONSTRAINT DF_s_log_audit_occurdatetime DEFAULT (SYSUTCDATETIME()),
|
||||
CONSTRAINT PK_s_log_audit PRIMARY KEY (b_id)
|
||||
);
|
||||
CREATE INDEX IX_s_log_audit_module ON dbo.s_log_audit (b_module_code, b_data_id, b_occurdatetime DESC);
|
||||
CREATE INDEX IX_s_log_audit_trace ON dbo.s_log_audit (b_trace_id);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.s_log_audit_field', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.s_log_audit_field (
|
||||
b_id bigint IDENTITY(1,1) NOT NULL,
|
||||
b_event_id bigint NOT NULL,
|
||||
b_module_code varchar(50) NULL,
|
||||
b_data_id varchar(50) NULL,
|
||||
b_field varchar(50) NOT NULL,
|
||||
b_field_label nvarchar(100) NULL,
|
||||
b_before_value nvarchar(max) NULL,
|
||||
b_after_value nvarchar(max) NULL,
|
||||
b_before_display nvarchar(500) NULL,
|
||||
b_after_display nvarchar(500) NULL,
|
||||
b_visibility varchar(20) NOT NULL CONSTRAINT DF_s_log_audit_field_visibility DEFAULT ('internal'),
|
||||
CONSTRAINT PK_s_log_audit_field PRIMARY KEY (b_id)
|
||||
);
|
||||
CREATE INDEX IX_s_log_audit_field_event ON dbo.s_log_audit_field (b_event_id);
|
||||
CREATE INDEX IX_s_log_audit_field_customer ON dbo.s_log_audit_field (b_module_code, b_data_id, b_visibility, b_event_id);
|
||||
END;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
|
||||
SELECT DB_NAME() AS database_name,
|
||||
(SELECT COUNT(*) FROM dbo.b_user) AS user_count,
|
||||
(SELECT COUNT(*) FROM sys.tables WHERE is_ms_shipped = 0) AS user_table_count;
|
||||
@@ -0,0 +1,44 @@
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
IF DB_NAME() <> N'FMS-NEW'
|
||||
THROW 51001, N'This migration can only run against FMS-NEW.', 1;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
DECLARE @sql nvarchar(max) = N'';
|
||||
SELECT @sql = @sql
|
||||
+ N'ALTER TABLE ' + QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id)) + N'.'
|
||||
+ QUOTENAME(OBJECT_NAME(parent_object_id)) + N' DROP CONSTRAINT ' + QUOTENAME(name) + N';'
|
||||
FROM sys.foreign_keys
|
||||
ORDER BY object_id;
|
||||
|
||||
IF @sql <> N''
|
||||
EXEC sys.sp_executesql @sql;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_field_group') AND name = N'IX_s_field_group_parent')
|
||||
CREATE INDEX IX_s_field_group_parent ON dbo.s_field_group (b_module_id, b_parent_id);
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_field_view') AND name = N'IX_s_field_view_group')
|
||||
CREATE INDEX IX_s_field_view_group ON dbo.s_field_view (b_module_id, b_group_id);
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_field_edit') AND name = N'IX_s_field_edit_group')
|
||||
CREATE INDEX IX_s_field_edit_group ON dbo.s_field_edit (b_module_id, b_group_id);
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_field_query') AND name = N'IX_s_field_query_module')
|
||||
CREATE INDEX IX_s_field_query_module ON dbo.s_field_query (b_module_id, b_canuse, b_xh, b_id);
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_field_query') AND name = N'IX_s_field_query_field')
|
||||
CREATE INDEX IX_s_field_query_field ON dbo.s_field_query (b_field_module_id, b_field_id);
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_field_query') AND name = N'IX_s_field_query_relation')
|
||||
CREATE INDEX IX_s_field_query_relation ON dbo.s_field_query (b_relation_id) WHERE b_relation_id IS NOT NULL;
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_relation') AND name = N'IX_s_relation_module')
|
||||
CREATE INDEX IX_s_relation_module ON dbo.s_relation (b_module_id, b_canuse, b_xh, b_id);
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_relation') AND name = N'IX_s_relation_junction')
|
||||
CREATE INDEX IX_s_relation_junction ON dbo.s_relation (b_junction_module_id) WHERE b_junction_module_id IS NOT NULL;
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_relation') AND name = N'IX_s_relation_order_module')
|
||||
CREATE INDEX IX_s_relation_order_module ON dbo.s_relation (b_order_module_id) WHERE b_order_module_id IS NOT NULL;
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_power') AND name = N'IX_s_power_module')
|
||||
CREATE INDEX IX_s_power_module ON dbo.s_power (b_module_id, b_field_id, b_canuse);
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_role_scope') AND name = N'IX_s_role_scope_field')
|
||||
CREATE INDEX IX_s_role_scope_field ON dbo.s_role_scope (b_module_id, b_scope_field_id) WHERE b_scope_field_id IS NOT NULL;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
|
||||
SELECT COUNT(*) AS foreign_key_count FROM sys.foreign_keys;
|
||||
Reference in new issue
Block a user