我有一个名为flightbooking的表。该表包含字段,包括标有' R'或者' C',保留和取消。
我想弄清楚的是允许删除状态为' C'但如果下一行的状态为' R'它不应该被删除。
[编辑]:我忘了添加我需要从leadcustomer表中删除客户记录。
总结如果CustomerID为2且status =' C'客户记录可以删除。 如果CustomerID为3且状态=' R'客户记录无法删除。
此外,使用
DELETE FROM leadcustomer
WHERE CustomerID = 2;
(此CustomerID记录的状态=' C'所以我应该能够删除它,但是外键违反了约束。)
答案 0 :(得分:0)
如果要拥有行间依赖关系,则必须经常使用窗口函数。以下可能会起到作用:
DELETE FROM flightbooking WHERE
flightbooking.id = (SELECT id FROM (
SELECT id,status,lead(status) OVER (ORDER BY id) FROM flightbooking) a
WHERE a.status='C' AND a.lead <> 'R') ;