I have following table:
q) t:([s:`symbol$()] id:();id2:`int$())
where 's' is a primary key and 'id' col has general type. I am trying to understand following behavior when inserting a list (string in this ex.) in 'id' column:
a) Upsert works but Insert fails
q) `t insert (`a;"gg";4) // 'type
q) `t upsert (`a;"gg";4) // works
b) Insert requires primary key to be enlisted as well:
q)`t insert (`a;enlist "gg";4) // 'length
q)`t insert (enlist `a;enlist "gg";4) // works
What's going on behind the scene?
I believe the problem is with "gg" - it is a list so the insert gets confused whether you're trying to insert one record or multiple. This:
`t insert (`a;"g";4)
works just fine. Unfortunately I do not know other workaround but give insert
a list of records of length one:
`t insert (enlist `c;enlist "gg";enlist 4)
I am not sure what's up with upsert
, but it might have something to do with its implementation via amend: .[;();,;]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With