从两个具有外键约束的表中删除
问题描述:
我在我的数据库中有两个表,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中。已终止 。
请告诉我如何做这个更新和删除。
我是新来的这个领域需要帮助感谢进步。
答
先删除t2 table a foreign key
然后删除t1 table primary key is uid
。这将不会反过来工作
答
您在表t2中有一个或多个子记录,它们指向要删除的表t1中的主记录。在t1中删除记录之前,必须删除t2中的子记录。
例如:
(1)删除*从T 2,其中t2.desg = t1.uid; (2)delete * from t1 where t1.uid = UID_TO_BE_REMOVED;
我会推荐阅读一个很好的参考资料,为您正在使用的SQL数据库创建表和执行查询。
祝你好运!
+1:正确。 'CASCADE DELETE'可以允许删除父节点上的同步子节点,但这样做有风险,因为它允许批量删除。 – 2010-09-28 18:37:38
不要告诉这对新手 – 2010-09-29 05:48:12
嗨感谢你的指导方针,有没有办法做到这一点,在一条线查询 – user460902 2010-10-01 10:47:59