在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>临时忽略外键
答案 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
。这是一个可更新的视图,因此它甚至允许修改表中的数据。
您可以更进一步,首先重命名该表,然后创建一个具有相同名称的视图。