sql – 如何从多个表中删除数据?
发布时间:2020-12-12 16:27:48 所属栏目:MsSql教程 来源:网络整理
导读:我有这些表: event (evt_id,evt_code,reg_id) magnitude (mag_id,evt_id,value) trace (trace_id,pt_id) point (pt_id,evt_id) 我想从与evt_id = 1139相关的所有表中删除所有行. 我该怎么做? 解决方法 如果您可以控制模式,我将使模式使用 cascading deletes
我有这些表:
event (evt_id,evt_code,reg_id) magnitude (mag_id,evt_id,value) trace (trace_id,pt_id) point (pt_id,evt_id) 我想从与evt_id = 1139相关的所有表中删除所有行. 解决方法如果您可以控制模式,我将使模式使用 cascading deletes.从文章(为您的例子翻译更相关的部分) CREATE TABLE point ( pt_id integer PRIMARY KEY,evt_id integer REFERENCES event ON DELETE CASCADE ) 如果您设置了级联,则可以从主事件表中删除,所有其他表将自动清除 否则,首先需要删除所有引用,然后删除主表.您应该在一个事务中执行此操作以保持数据一致 BEGIN; DELETE FROM trace WHERE EXISTS (SELECT 1 FROM point WHERE evt_id = 1139 AND trace.pt_id = point.pt_id); DELETE FROM point where evt_id = 1139; DELETE FROM magnitude where evt_id = 1139; DELETE FROM event where evt_id = 1139; COMMIT; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |