-1

在更改 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 相关的答案也很好......

4

1 回答 1

0

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

步骤顺序:

  1. 防止写入表(可选)
  2. 创建带有SHOW CREATE TABLE输出的新表。
  3. 应用架构更改。
  4. 将旧表中的数据复制到新表中。
  5. SHOW TRIGGERS从输出应用触发器。
  6. 交换新旧表。

希望这可以帮助。

于 2013-01-03T07:37:27.907 回答