insert
具有以下类型:
insert :: (ToPrimExprs r, ShowRecRow r, InsertRec r er) => Database -> Table er -> Record r -> IO ()
特别是
InsertRec r er
必须保持。递归类型程序在别处定义的:
InsertRec RecNil RecNil
(InsertExpr e, InsertRec r er) => InsertRec (RecCons f (e a) r) (RecCons f (Expr a) er)
第一行是基本情况。第二行是一个归纳的情况。它真的很想走遍er的每一个元素,桌子。没有短路,也不支持重新订购。但在我自己的测试中,我看到了这个工作,使用
_default
insQ db = insert db test_tbl1 (c1 <<- (Just 5) # c2 << _default)
所以如果你想部分插入,你可以说:
insC1 db x = insert db test_tbl1 (c1 <<- (Just x) # c2 << _default)
insC2 db x = insert db test_tbl2 (c1 << _default # c2 <<- (Just x))