我有这些表:
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;
原文地址:https://www.jb51.cc/mssql/82272.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。