从表中删除数据

时间:2012-06-08 19:27:48

标签: sql-server sql-server-2008 tsql sql-delete

可能我今天花了太长时间看这个,所以这是愚蠢的。 但........

我有一个简单的存储过程来执行此操作;

BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    DELETE FROM ProductLoading
END

ProductLoading由3个字段组成,其中不包含关键字段。它是一个临时表,当从单独的数据馈送加载数据时,需要在其中暂时包含数据。我这样做是为了检查要删除的产品。

现在运行此代码时,还会删除其他表格中的所有内容Products3。 如果我对这一行发表评论,那就没有了。

不是键和索引的专家,但有基本的把握。 但看了两个表,看不到任何依赖。 另外,当我运行执行计划时,它不会引用Products3表。

真的坚持这个。 任何人都会教我如何俯视。

4 个答案:

答案 0 :(得分:1)

听起来像Cascading Referential Integrity Constraints。您确定ProductLoading中的3个字段中的一个不是密钥吗?

答案 1 :(得分:1)

不确定发生了什么故障。

但令人费解之后,基本上在存储过程中添加了一个虚拟插入语句并重新编译它。

奇怪的是,删除语句没有过滤到Products3表。

然后我删除了这个虚拟插入语句,更奇怪的是存储过程继续工作。

现在唯一不同的是回归时,表是用错误的模式创建的。我立即意识到这一点,并在正确的架构下重新创建表并删除了错误创建的表。此时没有数据存在,因此不确定在此期间是否有任何损坏。看不出怎么样,但是嘿,1和0有时候不能加起来。

所以没有解决方案,只有li

之一

答案 2 :(得分:0)

ProductLoading loading必须包含一个主键,该主键是另一个启用了级联删除的表的外键。

enter image description here

答案 3 :(得分:0)

理论上,您的表ProductLoading可以触发删除吗?