Ich weiß nicht, ob ich Dich richtig verstehe, aber vielleicht willst Du einen TRIGGER, der prüft, ob die alte Revision gleich der der neuen - 1 ist, und falls nicht, mit RAISE EXCEPTION den Rest abwürgen.
leider geht das über einen Trigger nicht, da ich die letzte Revision nicht fix auf neueRev-1 setzen kann. Wir verwenden die Subversion Revsion des Datenbankschemas als Referenz.
Was ich brauche ist ein Diffskript in dem ich sagen kann auf welche Revision es anwendbar ist und welche Revision ich nach der Anwendung habe.
vielen Dank für den Tip mit der function. Hier meine Lösung:
CREATE TABLE difftest
(
id character varying(20),
"value" integer
);
INSERT INTO difftest VALUES ('revision', 100);
CREATE FUNCTION checkRevision(integer) RETURNS integer AS $$
DECLARE
revision ALIAS FOR $1;
currev integer;
BEGIN
SELECT value INTO currev from difftest where id='revision';
IF currev <> revision THEN
RAISE EXCEPTION 'wrong db revision to apply this patch';
END IF;
RETURN revision;
END;$$ LANGUAGE plpgsql;
SELECT checkRevision(101);