gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:08:44 24 4
gpt4 key购买 nike

我有这些表:

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;

关于sql - 如何从多个表中删除数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10145221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com