mysql - mysql 中的存储过程替代方案可以更改

标签 mysql stored-procedures

1.) mysql 中存储过程的替代方案,可以更改而不是删除并再次创建

2.) 维护数据库版本的简单方法我目前正在手动创建 log.sql 文件,例如示例 log.sql 文件

ALTER TABLE `ship` 
CHANGE COLUMN `is_deleted` `is_deleted` INT(11) NULL DEFAULT 0 ;
DROP procedure IF EXISTS `get_ship`;
DELIMITER ;;
CREATE PROCEDURE `get_ship`(

)
BEGIN
 do something;    
end if;
END ;;
DELIMITER ;

有没有更好、更简单的方法来创建这样的sql日志文件, 我已经尝试过 MYSQL Workbench

最佳答案

当您使用以下任何一种方式重新定义表结构时

  1. 删除列,
  2. 更改列,
  3. 修改列,
  4. 添加列,
  5. 重命名表格

并且您的存储过程依赖于同一个表及其预定义的列, 那么您别无选择,只能重新定义部分存储过程。

这只能通过删除并重新创建该过程来实现。

根据 ALTER PROCEDURE Syntax 上的文档,在 MySQL 中,

However, you cannot change the parameters or body of a stored procedure using this statement; to make such changes, you must drop and re-create the procedure using DROP PROCEDURE and CREATE PROCEDURE.

添加列可能不需要重新构建存储过程,除非新列也参与该过程的算法。

关于mysql - mysql 中的存储过程替代方案可以更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22526041/

相关文章:

MYSQL 函数 "Error Code: 1242 subquery returns more than 1 row"但我没有子查询

mysql - 优化 while 循环

java - 当在mysql数据库的日期时间列中插入日期和时间时,它将插入日期,但时间是00-00-00

sql - 在调用存储过程 Sql Server 2008 时使用嵌套存储过程结果

php - 存储过程返回 Mysql Php

MYSQL INSERT SELECT问题

MYSQL存储过程、案例

php - Bootstrap 表使用连续数据从 MySQL 轮询更新

php - 从 MySQL 时间戳列以 d-m-Y 格式输出日期

MySQL 在具有多个 ID 的列中查找空白