Actually, Ur/Web won't even accept those table definitions: no mutually
recursive definitions yet, w.r.t. constraints. And I haven't thought
before about allowing temporary breaking of constraints.
On 04/02/2017 08:35 AM, Marko Schütz Schmuck wrote:
If I have tables
table chicken : { Id : int, Egg : int }
PRIMARY KEY (Id),
CONSTRAINT egg FOREIGN KEY Egg REFERENCES egg(Id)
table egg : { Id : int, Chicken : int }
PRIMARY KEY (Id),
CONSTRAINT chicken FOREIGN KEY Chicken REFERENCES chicken(Id)
Outside of Ur/Web this would be solved by setting the constraints
DEFERRABLE INITIALLY DEFERRED and do the INSERTs pairwise inside a
single transaction.
I doubt that there currently is a way to do this in Ur/Web since there
is neither a way to specify DEFERRABLE INITIALLY DEFERRED nor a way to
explicitly form transactions.
Would it be enough to introduce an operator
dml_sequence : dml -> dml -> dml
allowing two dml statements to be composed and run in a single
transaction together with exposing DEFERRABLE INITIALLY DEFERRED at
the Ur/Web language level?
Best regards,
Marko
_______________________________________________
Ur mailing list
[email protected]
http://www.impredicative.com/cgi-bin/mailman/listinfo/ur