是否可以在不使用alter statement的情况下将新列添加到现有表中?
答案 0 :(得分:2)
是否可以在不使用alter语句的情况下将新列添加到现有表中?
没有
答案 1 :(得分:1)
其他人明确回答"不,这是不可能的。"这是你的字面问题的答案。但是我想知道你为什么问这个问题。
MySQL最大的痛点之一就是使用ALTER TABLE
锁定表格,而您正在进行更改,例如添加列,并且表格中的数据越多,此时间越长重组表。我猜测这是您遇到的问题,而且您正试图在您添加新列时尝试阻止访问该表格。
(将来,如果您解释更多关于您尝试做什么的话,它会帮助人们给您最好的答案。)
这个问题的答案是是的,有一个解决方案: pt-online-schema-change是一个可以实现此目的的免费工具。
您可以像使用ALTER TABLE一样使用它,但是在命令行而不是在SQL查询中使用它。
pt-online-schema-change --alter "ADD COLUMN c1 INT" D=sakila,t=actor
在此示例中,数据库名称为sakila
,表名为actor
。该脚本在幕后做了很多工作:
这有一些注意事项,比如原始表必须有主键,并且不能有现有的触发器。
它比传统的ALTER TABLE花费更长的时间,但由于它不会阻止对原始表的访问,因此它更方便。
这有帮助吗?