2010-09-28 122 views
2

我在我的数据库中有两个表,t1表的主键是uid,t2表是外键名desg。现在我想在一个表中删除或更新这个uid给出错误从两个具有外键约束的表中删除

现在行已更新。第 行中的数据未提交。错误 来源:.netSqlclient数据提供者。 错误消息:fk_t2_t1.the冲突发生在数据库数据库名称,dbo.t2,列 DESG 更新语句 冲突与参考 约束。已终止 。

当我尝试删除时,它会显示此消息。

执行的SQL语句:从t1 删除其中uid = 'ABC'

错误源:.netSqlclient数据 提供商。错误消息:删除 语句与 参考约束冲突fk_t2_t1.the 冲突发生在数据库DBname, dbo.t2,列desg中。已终止 。

请告诉我如何做这个更新和删除。

我是新来的这个领域需要帮助感谢进步。

回答

2

先删除t2 table a foreign key然后删除t1 table primary key is uid。这将不会反过来工作

2

您在表t2中有一个或多个子记录,它们指向要删除的表t1中的主记录。在t1中删除记录之前,必须删除t2中的子记录。

例如:

(1)删除*从T 2,其中t2.desg = t1.uid; (2)delete * from t1 where t1.uid = UID_TO_BE_REMOVED;

我会推荐阅读一个很好的参考资料,为您正在使用的SQL数据库创建表和执行查询。

祝你好运!

+0

+1:正确。 'CASCADE DELETE'可以允许删除父节点上的同步子节点,但这样做有风险,因为它允许批量删除。 – 2010-09-28 18:37:38

+0

不要告诉这对新手 – 2010-09-29 05:48:12

+0

嗨感谢你的指导方针,有没有办法做到这一点,在一条线查询 – user460902 2010-10-01 10:47:59