我需要根据现有表创建一个新表。使用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...
- 运行执行命令后我可以立即读取“ session 标准输出”吗?
使用 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/