SQL drop table并重新创建并保留数据

use*_*883 5 sql sql-server foreign-keys sql-drop

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

使用MS SQL Server

voo*_*tch 10

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

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

希望这可以帮助

  • 正是我所需要的。能够使用此方法向我的表添加附加列而不会丢失数据。对于其他使用我的用例的人,请确保将新列和值添加到 DROP 和 CREATE 语句后面的 INSERT 语句中。 (2认同)

JNK*_*JNK 8

这是一些伪代码.无需制作备份表,只需创建具有正确约束的新表,将记录插入其中,然后重命名.

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'
Run Code Online (Sandbox Code Playgroud)


Cri*_*tiC 2

这是你唯一的解决方案。

创建备份表,清空原来的表,修改表然后一步步插入,直到发现违规。