微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – 如何从多个表中删除数据?

我有这些表:
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 举报,一经查实,本站将立刻删除。

相关推荐