更改表在Mysql中给出致命错误

时间:2013-01-03 06:45:03

标签: mysql

在更改mysql中的表以添加新列时,我发现致命错误..我已经看到了这个问题的相关答案,我找到了答案,如: -

Make a new table with the same structure.
Add the column to the new table.
Insert the data from the old table into the new table.
Rename the old table to old.bak
Rename the new table to the old table.
If all went well, delete the old.bak.

但我的原始表包含一些触发器,索引等。

我的问题是

“我可以用任何差异方式编写我的Alter脚本来克服这个致命错误吗?”

我的担忧与MYSQL有关,但任何其他与RDBMS相关的答案也很好......

1 个答案:

答案 0 :(得分:0)

这是MySQL特定的:您可以使用[SHOW CREATE TABLE tabname][1][SHOW TRIGGERS WHERE Table = 'tabname'][2]的组合来重新生成表和触发器。您可能不希望在复制行时触发触发器。此外,如果表格大小很大或者您具有足够高的更改率,您可能希望在复制期间阻止对其进行写入。

步骤顺序:

  1. 防止写入表格(可选)
  2. 使用SHOW CREATE TABLE输出创建新表。
  3. 应用架构更改。
  4. 将数据从旧表复制到新表。
  5. SHOW TRIGGERS输出中应用触发器。
  6. 交换旧桌和新桌。
  7. 希望这有帮助。