AppDbUpdater: Fix migration 10 to 11 by creating a new table

This commit is contained in:
2024-01-08 11:21:01 +01:00
parent b723161fa5
commit 062c7bed5e

View File

@ -1,17 +1,33 @@
-- schema version 10 to 11
-- Drop columns, if they exist...
ALTER TABLE payment_delivery_part DROP COLUMN price_1;
ALTER TABLE payment_delivery_part DROP COLUMN price_2;
ALTER TABLE payment_delivery_part DROP COLUMN price_3;
ALTER TABLE payment_delivery_part DROP COLUMN price_4;
ALTER TABLE payment_delivery_part DROP COLUMN price_5;
ALTER TABLE payment_delivery_part DROP COLUMN price_6;
ALTER TABLE payment_delivery_part DROP COLUMN price_7;
ALTER TABLE payment_delivery_part DROP COLUMN price_8;
ALTER TABLE payment_delivery_part DROP COLUMN price_9;
CREATE TABLE payment_delivery_part_new (
year INTEGER NOT NULL,
did INTEGER NOT NULL,
dpnr INTEGER NOT NULL,
avnr INTEGER NOT NULL,
DROP TRIGGER t_payment_delivery_part_i;
net_amount INTEGER NOT NULL,
mod_abs INTEGER NOT NULL DEFAULT 0,
mod_rel REAL NOT NULL DEFAULT 0,
amount INTEGER NOT NULL GENERATED ALWAYS AS (ROUND(net_amount * (1 + mod_rel) + mod_abs)) STORED,
CONSTRAINT pk_payment_delivery_part PRIMARY KEY (year, did, dpnr, avnr),
CONSTRAINT fk_payment_delivery_part_delivery_part FOREIGN KEY (year, did, dpnr) REFERENCES delivery_part (year, did, dpnr)
ON UPDATE CASCADE
ON DELETE CASCADE,
CONSTRAINT fk_payment_delivery_part_payment_variant FOREIGN KEY (year, avnr) REFERENCES payment_variant (year, avnr)
ON UPDATE CASCADE
ON DELETE CASCADE
) STRICT;
INSERT INTO payment_delivery_part_new (year, did, dpnr, avnr, net_amount, mod_abs, mod_rel)
SELECT year, did, dpnr, avnr, net_amount, mod_abs, mod_rel
FROM payment_delivery_part;
PRAGMA writable_schema = ON;
DROP TABLE payment_delivery_part;
ALTER TABLE payment_delivery_part_new RENAME TO payment_delivery_part;
PRAGMA writable_schema = OFF;
DROP TRIGGER IF EXISTS t_payment_delivery_part_i;
CREATE TRIGGER t_payment_delivery_part_i
AFTER INSERT ON payment_delivery_part FOR EACH ROW
BEGIN
@ -20,7 +36,7 @@ BEGIN
ON CONFLICT DO UPDATE SET net_amount = net_amount + excluded.net_amount;
END;
DROP TRIGGER t_payment_delivery_part_u;
DROP TRIGGER IF EXISTS t_payment_delivery_part_u;
CREATE TRIGGER t_payment_delivery_part_u
AFTER UPDATE ON payment_delivery_part FOR EACH ROW
BEGIN
@ -32,7 +48,7 @@ BEGIN
ON CONFLICT DO UPDATE SET net_amount = net_amount + excluded.net_amount;
END;
DROP TRIGGER t_payment_delivery_part_d;
DROP TRIGGER IF EXISTS t_payment_delivery_part_d;
CREATE TRIGGER t_payment_delivery_part_d
AFTER DELETE ON payment_delivery_part FOR EACH ROW
BEGIN
@ -41,7 +57,7 @@ BEGIN
WHERE (year, avnr, mgnr) IN (SELECT year, OLD.avnr, mgnr FROM delivery WHERE (year, did) = (OLD.year, OLD.did));
END;
DROP TRIGGER t_payment_delivery_part_bucket_u;
DROP TRIGGER IF EXISTS t_payment_delivery_part_bucket_u;
CREATE TRIGGER t_payment_delivery_part_bucket_u
AFTER UPDATE ON payment_delivery_part_bucket FOR EACH ROW
BEGIN