From 764d8110ecebc1ba848974f7b254faf597c4feae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AC=E6=98=8E?= <83812544+Ed1s0nZ@users.noreply.github.com> Date: Thu, 28 May 2026 11:21:07 +0800 Subject: [PATCH] Add files via upload --- internal/database/vulnerability.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/internal/database/vulnerability.go b/internal/database/vulnerability.go index de67dbeb..77766207 100644 --- a/internal/database/vulnerability.go +++ b/internal/database/vulnerability.go @@ -265,10 +265,22 @@ func (db *DB) UpdateVulnerability(id string, vuln *Vulnerability) error { // DeleteVulnerability 删除漏洞 func (db *DB) DeleteVulnerability(id string) error { - _, err := db.Exec("DELETE FROM vulnerabilities WHERE id = ?", id) + tx, err := db.Begin() if err != nil { + return fmt.Errorf("开启事务失败: %w", err) + } + defer func() { _ = tx.Rollback() }() + + // 删除漏洞前先解除项目事实中的关联,避免前端继续显示已删除漏洞的短 ID。 + if _, err := tx.Exec("UPDATE project_facts SET related_vulnerability_id = NULL WHERE related_vulnerability_id = ?", id); err != nil { + return fmt.Errorf("清理事实漏洞关联失败: %w", err) + } + if _, err := tx.Exec("DELETE FROM vulnerabilities WHERE id = ?", id); err != nil { return fmt.Errorf("删除漏洞失败: %w", err) } + if err := tx.Commit(); err != nil { + return fmt.Errorf("提交事务失败: %w", err) + } return nil }