20 lines
758 B
SQL
20 lines
758 B
SQL
-- Migration: Unique-Constraints für Journal-Einträge
|
|
-- Verhindert Doppelbuchungen (max. 1 Journal-Eintrag pro Rechnung/Ausgabe)
|
|
|
|
-- Zuerst evtl. vorhandene Duplikate bereinigen (behalte nur den neuesten)
|
|
DELETE FROM journal_entries a
|
|
USING journal_entries b
|
|
WHERE a.invoice_id IS NOT NULL
|
|
AND a.invoice_id = b.invoice_id
|
|
AND a.id < b.id;
|
|
|
|
DELETE FROM journal_entries a
|
|
USING journal_entries b
|
|
WHERE a.expense_id IS NOT NULL
|
|
AND a.expense_id = b.expense_id
|
|
AND a.id < b.id;
|
|
|
|
-- Unique-Indexes erstellen
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_unique_journal_invoice ON journal_entries(invoice_id) WHERE invoice_id IS NOT NULL;
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_unique_journal_expense ON journal_entries(expense_id) WHERE expense_id IS NOT NULL;
|