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.
110 lines
2.6 KiB
MySQL
110 lines
2.6 KiB
MySQL
3 years ago
|
SET NAMES utf8mb4;
|
||
|
SET
|
||
|
FOREIGN_KEY_CHECKS = 0;
|
||
|
DROP TABLE IF EXISTS `db_version`;
|
||
|
CREATE TABLE `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;
|
||
|
/*创建定义普通索引函数结束*/
|