我需要根据现有表创建一个新表。使用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,......
使用CALL时是否可以获取存储过程的输出。例如:
set res = call createCopy(tableName)
答案 0 :(得分:0)
使用SQL(MySQL)脚本无法从SHOW语句结果中读取单元格。
我建议您使用CREATE TABLE with SELECT命令。它会起作用。
来自 CREATE TABLE ... SELECT语法文档:
您可以通过添加SELECT语句从另一个表创建一个表 CREATE TABLE语句的结尾。
答案 1 :(得分:0)
现在看来,有两种方法可以解决这个问题
1.使用CREATE LIKE
并单独维护约束
2.使用BASH