mysql - 绑定(bind)到存储过程内的 SHOW CREATE TABLE 结果

标签 mysql

我需要根据现有表创建一个新表。使用Create table like不会创建约束。

为了解决这个问题,我尝试使用存储过程来实现。

set @a = concat("SHOW CREATE TABLE ", tableName);
PREPARE stmt1 FROM @a ;
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1;

现在我想获取“EXECUTE stmt1”的输出,更改表名称并执行它,以原始表结构的深拷贝结束。

我只想用 Mysql 脚本来做,我知道如何用 bash、golang、Java、PHP...

  1. 运行执行命令后我可以立即读取“ session 标准输出”吗?
  2. 使用 CALL 时我可以获取存储过程的输出吗?例如:

    set res = call createCopy(tableName)
    

最佳答案

无法使用 SQL (MySQL) 脚本从 SHOW 语句结果中读取单元格。

我建议您使用CREATE TABLE with SELECT命令。它会成功的。

来自CREATE TABLE ... SELECT Syntax文档:

You can create one table from another by adding a SELECT statement at the end of the CREATE TABLE statement.

关于mysql - 绑定(bind)到存储过程内的 SHOW CREATE TABLE 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32756952/

相关文章:

mysql - 如何修复 Zsh 中的 "command not found: mysql"

php - 为什么 Doctrine 2在重复查询时会去DB?

MySQL数据库优化和性能: 2 tables or 3 tables?

php - Drupal - 以编程方式更改某些迁移术语的 url 别名

php - 通过 ORM 将数据导入 Magento 的性能是否可以接受,或者直接 SQL 是唯一的选择吗?

MySQL 查询失败

php - MySQL:连接可以解决问题吗?

MySQL:删除忽略外键约束的行

php - 如何使用俱乐部 ID 在联赛数据库中创建随机比赛?

php - 在PHP中查找格式为 'mm/dd/yyyy'的两个日期之间的天数