You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
3.8 KiB
SQL
151 lines
3.8 KiB
SQL
SET NAMES utf8mb4;
|
|
SET FOREIGN_KEY_CHECKS = 0;
|
|
DROP TABLE IF EXISTS `sys_db_version`;
|
|
CREATE TABLE `sys_db_version` (
|
|
`id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
`version` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '版本号',
|
|
`created` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
|
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
|
|
PRIMARY KEY (`id`) USING BTREE
|
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '数据版本' ROW_FORMAT = Dynamic;
|
|
|
|
SET FOREIGN_KEY_CHECKS = 1;
|
|
|
|
|
|
/* 创建函数Pro_Temp_ColumnWork操作表字段 */
|
|
DROP PROCEDURE IF EXISTS Pro_Temp_ColumnWork;
|
|
CREATE PROCEDURE `Pro_Temp_ColumnWork` ( TableName VARCHAR ( 50 ), ColumnName VARCHAR ( 50 ), SqlStr VARCHAR ( 4000 ), CType INT ) BEGIN
|
|
DECLARE
|
|
Rows1 INT;
|
|
|
|
SET Rows1 = 0;
|
|
SELECT
|
|
COUNT(*) INTO Rows1
|
|
FROM
|
|
INFORMATION_SCHEMA.COLUMNS
|
|
WHERE
|
|
table_schema = DATABASE ()
|
|
AND upper( table_name )= TableName
|
|
AND upper( column_name )= ColumnName;
|
|
IF
|
|
( CType = 1 AND Rows1 <= 0 ) THEN
|
|
|
|
SET SqlStr := CONCAT( 'ALTER TABLE ', TableName, ' ADD COLUMN ', ColumnName, ' ', SqlStr );
|
|
|
|
ELSEIF ( CType = 2 AND Rows1 > 0 ) THEN
|
|
|
|
SET SqlStr := CONCAT( 'ALTER TABLE ', TableName, ' MODIFY ', ColumnName, ' ', SqlStr );
|
|
|
|
ELSEIF ( CType = 3 AND Rows1 > 0 ) THEN
|
|
|
|
SET SqlStr := CONCAT( 'ALTER TABLE ', TableName, ' DROP COLUMN ', ColumnName );
|
|
ELSE
|
|
SET SqlStr := '';
|
|
|
|
END IF;
|
|
IF
|
|
( SqlStr <> '' ) THEN
|
|
|
|
SET @SQL1 = SqlStr;
|
|
PREPARE stmt1
|
|
FROM
|
|
@SQL1;
|
|
EXECUTE stmt1;
|
|
|
|
END IF;
|
|
|
|
END;
|
|
/** 函数创建结束 **/
|
|
|
|
/*创建定义普通索引函数*/
|
|
DROP PROCEDURE IF EXISTS Modify_index;
|
|
|
|
CREATE PROCEDURE Modify_index (
|
|
TableName VARCHAR ( 50 ),
|
|
ColumnNames VARCHAR ( 500 ),
|
|
idx_name VARCHAR ( 50 ),
|
|
idx_type VARCHAR ( 50 )) BEGIN
|
|
DECLARE
|
|
Rows1 int;
|
|
DECLARE
|
|
SqlStr VARCHAR(4000);
|
|
DECLARE
|
|
target_database VARCHAR ( 100 );
|
|
SELECT DATABASE
|
|
() INTO target_database;
|
|
|
|
SET Rows1 = 0;
|
|
SELECT
|
|
COUNT(*) INTO Rows1
|
|
FROM
|
|
information_schema.statistics
|
|
WHERE
|
|
table_schema = DATABASE ()
|
|
AND upper( table_name )= upper(TableName)
|
|
AND upper( index_name )= upper(idx_name);
|
|
IF Rows1<=0 THEN
|
|
SET SqlStr := CONCAT( 'alter table ', TableName, ' ADD INDEX ', idx_name, '(', ColumnNames, ') USING ', idx_type );
|
|
END IF;
|
|
IF
|
|
( SqlStr <> '' ) THEN
|
|
|
|
SET @SQL1 = SqlStr;
|
|
PREPARE stmt1
|
|
FROM
|
|
@SQL1;
|
|
EXECUTE stmt1;
|
|
|
|
END IF;
|
|
|
|
END;
|
|
/*创建定义普通索引函数结束*/
|
|
|
|
|
|
|
|
/*创建定义唯一索引函数*/
|
|
DROP PROCEDURE IF EXISTS Modify_UNIQUE_index;
|
|
|
|
CREATE PROCEDURE Modify_UNIQUE_index(
|
|
TableName VARCHAR(50),
|
|
ColumnNames VARCHAR(500),
|
|
idx_name VARCHAR(50),
|
|
idx_type VARCHAR(50))
|
|
BEGIN
|
|
DECLARE
|
|
Rows1 int;
|
|
DECLARE
|
|
SqlStr VARCHAR(4000);
|
|
DECLARE
|
|
target_database VARCHAR(100);
|
|
SELECT DATABASE
|
|
()
|
|
INTO target_database;
|
|
|
|
SET Rows1 = 0;
|
|
SELECT COUNT(*)
|
|
INTO Rows1
|
|
FROM information_schema.statistics
|
|
WHERE table_schema = DATABASE()
|
|
AND upper(table_name) = upper(TableName)
|
|
AND upper(index_name) = upper(idx_name);
|
|
IF Rows1 <= 0 THEN
|
|
SET SqlStr :=
|
|
CONCAT('alter table `', TableName, '` ADD UNIQUE INDEX `', idx_name, '`(`', ColumnNames, '`) USING ',
|
|
idx_type);
|
|
END IF;
|
|
IF
|
|
(SqlStr <> '') THEN
|
|
|
|
SET @SQL1 = SqlStr;
|
|
PREPARE stmt1
|
|
FROM
|
|
@SQL1;
|
|
EXECUTE stmt1;
|
|
|
|
END IF;
|
|
|
|
END;
|
|
/*创建定义唯一索引函数*/
|
|
|
|
|