SQL Server语言 - SQL 删除表并重新创建和保留数据



在我们的原始设计中,我们在表中搞砸了一个外键约束。现在,表已满数据,如果不删除表中的所有记录,我们就无法更改它。我能想到的唯一解决方案是创建一个备份表并将所有记录放入其中,然后删除所有记录,更改表并开始重新添加它们。还有其他(更好)的想法吗?谢谢!

使用 MS SQL Server

我有点晚了,仅供参考。
如果您使用的是 SQL Server Management Studio,则可以使用"保留架构和数据"选项生成 DROP 和重新创建脚本。

  1. 在对象资源管理器中右键单击所需的数据库
  2. 任务> 生成脚本
  3. 选择要编写脚本的表
  4. 然后点击高级按钮
    • "脚本拖放和创建" ->"脚本删除和创建"
    • "要编写脚本的数据类型" -> "架构和数据"

希望这有帮助

这里有一些伪代码。 无需创建备份表,只需创建一个具有正确约束的新表,将记录插入其中,然后重命名即可。

CREATE TABLE MyTable_2
(...field definitions)
<add the constraint to MyTable_2>
INSERT INTO MyTable_2 (fields)
SELECT fields
FROM MyTable
DROP TABLE MyTable
exec sp_rename 'MyTable2', 'Mytable'

使用 SQL Server Management Studio (SSMS),可以使用它的表设计器来指定表的最终条件。 在保存更改之前,请让它生成更改脚本并保存该脚本。 取消设计窗口,打开脚本并查看它。 SSMS 可能已生成一个脚本,该脚本可执行所需的所有操作,在保留所有现有数据的同时修复主-外键关系。 如果没有,您将拥有一个已经启动的脚本,该脚本执行您需要执行的大部分操作,并且应该能够根据您的需要对其进行修改。

这是

您唯一的解决方案。

创建备份表,清空原始表,修改表,然后逐步插入,直到发现冲突。

通过新的模式数据库更新所有旧模式数据库。

  1. 创建脚本(在对象资源管理器中右键单击所需的数据库 任务> 生成脚本 ->选择选项 选择特定的数据库对象和表 ->下一个 ->高级>选项 要编写脚本的数据类型 仅数据 -> 确定 ->下一页 ->下一页)到仅数据并将数据库备份到旧数据库
  2. 删除旧数据库并创建新数据库并使新数据库为空。
  3. 仅在新数据库上执行旧数据的脚本。

最新更新