Acabo de iniciar un nuevo proyecto y quería usar HaskellDB al principio. He creado una base de datos con 2 columnas:Insertar SQL parcial en haskelldb
create table sensor (
service text,
name text
);
..found la manera de hacer la maquinaria HaskellDB básica (ohhh..the documentación) y quería hacer una inserción. Sin embargo, lo que quería hacer una inserción parcial (no se supone que son más columnas), algo así como:
insert into sensor (service) values ('myservice');
Traducido a HaskellDB:
transaction db $ insert db SE.sensor (SE.service <<- (Just $ senService sensor))
Pero ... que simplemente no funciona . Lo que tampoco funciona es si especifico los nombres de las columnas en orden diferente, que tampoco es exactamente coneniente. ¿Hay alguna manera de hacer una inserción parcial en haskelldb?
Los códigos de error que recibo son - cuando acaba de insertar una columna diferente (el 'nombre') como el primero:
Couldn't match expected type `SEI.Service'
against inferred type `SEI.Name'
Expected type: SEI.Intsensor
Inferred type: Database.HaskellDB.HDBRec.RecCons
SEI.Name (Expr String) er
When using functional dependencies to combine
Database.HaskellDB.Query.InsertRec
(Database.HaskellDB.HDBRec.RecCons f (e a) r)
(Database.HaskellDB.HDBRec.RecCons f (Expr a) er),
etc..
Y cuando lo haga el 'servicio' como la primera - y sólo - campo, me sale:
Couldn't match expected type `Database.HaskellDB.HDBRec.RecCons
SEI.Name
(Expr String)
(Database.HaskellDB.HDBRec.RecCons
SEI.Time
(Expr Int)
(Database.HaskellDB.HDBRec.RecCons
SEI.Intval (Expr Int) Database.HaskellDB.HDBRec.RecNil))'
against inferred type `Database.HaskellDB.HDBRec.RecNil'
(tengo un par de otras columnas de la tabla) Esto se ve realmente como 'mediante el diseño', por desgracia :(
Sería útil saber qué errores ve y los tipos calculados para algunas expresiones intermedias. –