如何临时删除SQL表中的某些行?

时间:2013-12-21 11:25:53

标签: sql sql-server

在SP中,我想从表中删除一些行,并在一些代码中将删除的行插入同一个表中。 我该怎么办?

谢谢大家。

更新

我有一张表:

SampleTable(Col1,Col2,Col3,Col4)

我想这样做:

DELETE FROM SampleTable 
WHERE Col1 = "foo"

-- SOME CODE...

INSERT INTO SampleTable 
[DELETED VALUES...]

更新:

抱歉,但现在我看不到数据库了。

问题是在SOME CODE...部分,由其他人编写,有一个删除给我一个错误,但删除后有一个插入SP输入用相同的替换已删除的行键。

我知道UPDATE显然解决了我的问题,但有很多逻辑,我不想更改SOME CODE...部分,所以我正在寻找一个解决方法,所以我想< em>临时忽略外键

2 个答案:

答案 0 :(得分:0)

选择*进入#ttable FROM SampleTable Col1 =“foo”

从SampleTable中删除 Col1 =“foo”

- 一些代码...

INSERT INTO SampleTable 从#ttable

中选择*

答案 1 :(得分:0)

删除和重新插入行可能会引入各种问题。例如,identity()值将更改(以及自动分配的创建时间)。此外,您可能有约束。理论上,删除和重新插入之间的任何事情都可能发生在数据库中,因此曾经有效的约束可能会失败。

如何创建视图?

create view v_SampleTable as
    select *
    from SampleTable
    where col1 = 'foo' or col1 is null;

然后将代码更改为使用v_SampleTable而不是SampleTable。这是一个可更新的视图,因此它甚至允许修改表中的数据。

您可以更进一步,首先重命名该表,然后创建一个具有相同名称的视图。