adamc@471: sequence s adamc@469: table t : { Id : int, Parent : option int, Nam : string } adamc@715: PRIMARY KEY Id, adamc@715: CONSTRAINT F FOREIGN KEY Parent REFERENCES t (Id) ON DELETE CASCADE adamc@469: adamc@469: open TreeFun.Make(struct adamc@1078: con id = #Id adamc@1078: con parent = #Parent adamc@1079: val tab = t adamc@469: end) adamc@469: adamc@469: fun row r = adamc@732: #{[r.Id]}: {[r.Nam]}
adamc@471: adamc@471:
adamc@471: Add child: adamc@471: adamc@469:
adamc@469: adamc@471: and main () = adamc@469: xml <- tree row None; adamc@469: return adamc@469: {xml} adamc@471: adamc@471:
adamc@471: Add a top-level node: adamc@471: adamc@469:
adamc@471: adamc@471: and add parent r = adamc@471: id <- nextval s; adamc@471: dml (INSERT INTO t (Id, Parent, Nam) VALUES ({[id]}, {[parent]}, {[r.Nam]})); adamc@471: main () adamc@471: adamc@732: and del id () = adamc@471: dml (DELETE FROM t WHERE Id = {[id]}); adamc@471: main ()