我试图创建一个SQL查询以删除父项时删除子记录。
事情是,孩子和父母都存放在同一张桌子上。
这里的(简化的)数据模型:删除缺少父项的子记录
ThingTable
ID | Name | ParentID
1000 | Thing1 | NULL
1001 | Thing2 | 1000
1002 | Thing3 | 1000
1003 | Thing4 | 1000
1004 | Thing5 | 1003
ChildThingTable
ID | Color
1001 | Blue
1002 | Black
1003 | Green
1004 | Red
假设ID 1000(父)已删除,我d需要删除相应的记录ChildThingTable以及ThingTable的Ords。
我唯一的限制是我无法以任何方式使用触发器或更改底层数据库结构。
这里是我的伪代码,我已经制定出来,但我有困难,其转换为SQL:基于ID
- 从ChildThingTable删除其中ThingTable匹配的记录没有父母,和PARENTID。
- 从ThingTable中删除匹配记录没有父项的地方。
任何援助将不胜感激!
不幸的是,我不能添加约束。我唯一的选择是使用存储过程。谢谢! – TelJanini
增加了更多,它可能不完全正确,但它应该非常接近,链接应该有助于回答一些问题。 – bowlturner
处理RI的正确方式就像是@bowlturner发布的。如果您尝试在存储过程中执行此操作,您可以并最终会收到错误的数据。 –