On-Delete Cascade

时间:2011-08-14 08:16:18

标签: sql sql-server foreign-key-relationship

我有一个包含外键的关系表,其中没有“on delete cascade”属性集。现在我想删除一个特定的记录,但我无法做到!

当我尝试从引用的关系中删除记录时,它会给出错误“删除语句与外键约束冲突。”

当我尝试从引用关系中删除记录时,它会给出相同的错误。

即使我现在也无法更改数据库架构。任何出路?

更新 关系模式

Customer(c_id,c_name);
Products(p_id,p_name,p_cost);
purchases(p_id references Products,c_id references Customr);

我想删除purchases关系中的元组。

更新:删除声明

该表已包含以下数据:

c_id p_id

1 4

1 3

1 2

1 1

2 3

1 4(注意重复元组)

现在我想删除此行上方的记录。即重复记录。 我只是右键单击管理工作室中表格视图中显示的元组,然后点击删除键。它给出了错误。

更新

我用过

delete from Purchases where c_id=1 and p_id=4 

一切都很好!!!

最初我曾经通过在表格视图中选择记录并按下删除键来删除。现在它奏效了。任何人都可以解释一下有什么区别吗?

1 个答案:

答案 0 :(得分:0)

您可能正在使用SQL Server Management Studio中的“编辑顶部X记录”界面来删除记录。此功能要求您在表上定义主键,因为它需要能够唯一标识您要删除的行。它不能直接从表中删除行,它只是为您在后台构造SQL。您是否在表格中定义了主键?