Changed FAIL -> ABORT trigger exceptions

With FAIL, triggers choke but leave the changes in despite. We need to have the current statement undone, however.
This commit is contained in:
Florian "flowdy" Heß 2017-02-22 21:58:47 +01:00
parent f54f940f74
commit 5299966837
9 changed files with 12 additions and 12 deletions

View File

@ -2,12 +2,12 @@ CREATE TRIGGER linkTransferTightly
AFTER INSERT ON Transfer
BEGIN
SELECT RAISE(FAIL, "It is not the debtor who is set to pay")
SELECT RAISE(ABORT, "It is not the debtor who is set to pay")
WHERE (SELECT debtor FROM Debit WHERE billId=NEW.billId)
!= (SELECT account FROM Credit WHERE credId=NEW.credId)
;
SELECT RAISE(FAIL, "Target of a debit cannot be an incoming payment")
SELECT RAISE(ABORT, "Target of a debit cannot be an incoming payment")
FROM Credit c
JOIN Debit d ON c.credId = d.targetCredit
WHERE c.credId = NEW.credId
@ -18,8 +18,8 @@ BEGIN
INSERT INTO __INTERNAL_TRIGGER_STACK
SELECT NEW.ROWID,
CASE remainingDebt WHEN 0 THEN RAISE(FAIL, "Debt settled") ELSE NEW.billId END,
CASE remainingCredit WHEN 0 THEN RAISE(FAIL, "Credit spent") ELSE NEW.credId END,
CASE remainingDebt WHEN 0 THEN RAISE(ABORT, "Debt settled") ELSE NEW.billId END,
CASE remainingCredit WHEN 0 THEN RAISE(ABORT, "Credit spent") ELSE NEW.credId END,
min(remainingDebt, remainingCredit)
FROM (SELECT
(SELECT value - paid FROM Debit WHERE billId=NEW.billId) AS remainingDebt,

View File

@ -2,7 +2,7 @@ CREATE TRIGGER checkIBANatTransfer
BEFORE INSERT ON Debit
WHEN NEW.targetCredit IS NULL
BEGIN
SELECT RAISE(FAIL, "IBAN used does not match IBAN currently stored in account record")
SELECT RAISE(ABORT, "IBAN used does not match IBAN currently stored in account record")
FROM (
SELECT instr(NEW.purpose, IBAN) AS fnd
FROM Account

View File

@ -3,6 +3,6 @@ CREATE TRIGGER x_changedCredit
WHEN EXISTS (SELECT * FROM Transfer WHERE credId=NEW.credId)
AND NOT EXISTS (SELECT * FROM __INTERNAL_TRIGGER_STACK)
BEGIN
SELECT RAISE(FAIL, "Credit involved in transactions to revoke at first");
SELECT RAISE(ABORT, "Credit involved in transactions to revoke at first");
END;

View File

@ -3,6 +3,6 @@ CREATE TRIGGER x_changedDebit
WHEN EXISTS (SELECT * FROM Transfer WHERE billId=NEW.billId)
AND NOT EXISTS (SELECT * FROM __INTERNAL_TRIGGER_STACK LIMIT 1)
BEGIN
SELECT RAISE(FAIL, "Debt is involved in transfers to revoke at first");
SELECT RAISE(ABORT, "Debt is involved in transfers to revoke at first");
END;

View File

@ -3,6 +3,6 @@ CREATE TRIGGER x_changedTransfer
WHEN OLD.amount IS NOT NULL
AND NOT EXISTS (SELECT * FROM __INTERNAL_TRIGGER_STACK)
BEGIN
SELECT RAISE(FAIL, "Transfer cannot be updated, but needs to be replaced to make triggers run");
SELECT RAISE(ABORT, "Transfer cannot be updated, but needs to be replaced to make triggers run");
END;

View File

@ -4,6 +4,6 @@ CREATE TRIGGER x_paidChangedOutsideTrigger
BEFORE UPDATE OF paid ON Debit
WHEN NOT EXISTS (SELECT * FROM __INTERNAL_TRIGGER_STACK LIMIT 1)
BEGIN
SELECT RAISE(FAIL, "paid is set and adjusted automatically according to added Transfer records");
SELECT RAISE(ABORT, "paid is set and adjusted automatically according to added Transfer records");
END;

View File

@ -1,7 +1,7 @@
CREATE TRIGGER x_paidFromBeginning
BEFORE INSERT ON Debit
BEGIN
SELECT RAISE(FAIL, "Debt must be initially unpaid")
SELECT RAISE(ABORT, "Debt must be initially unpaid")
WHERE NEW.paid <> 0;
END;

View File

@ -4,6 +4,6 @@ CREATE TRIGGER x_spentChangedOutsideTrigger
BEFORE UPDATE OF spent ON Credit
WHEN NOT EXISTS (SELECT * FROM __INTERNAL_TRIGGER_STACK)
BEGIN
SELECT RAISE(FAIL, "spent is set and adjusted automatically according to added Transfer records");
SELECT RAISE(ABORT, "spent is set and adjusted automatically according to added Transfer records");
END;

View File

@ -1,7 +1,7 @@
CREATE TRIGGER x_spentFromBeginning
BEFORE INSERT ON Credit
BEGIN
SELECT RAISE(FAIL, "credit must be initially unused")
SELECT RAISE(ABORT, "credit must be initially unused")
WHERE NEW.spent != 0;
END;