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

前端之家收集整理的这篇文章主要介绍了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.f2er.com/mssql/82272.html

猜你在找的MsSQL相关文章