KDB中Insert和Upsert的行为

Rah*_*hul 8 database insert primary-key kdb

我有以下表格:

           q) t:([s:`symbol$()] id:();id2:`int$())
Run Code Online (Sandbox Code Playgroud)

其中's'是主键,'id'col是常规类型.我在'id'列中插入列表(此例中的字符串)时试图理解以下行为:

a)Upsert有效但插入失败

          q) `t insert (`a;"gg";4)     // 'type 
          q) `t upsert (`a;"gg";4)     // works
Run Code Online (Sandbox Code Playgroud)

b)插入也需要登记主键:

    q)`t insert  (`a;enlist "gg";4)    // 'length

    q)`t insert  (enlist `a;enlist "gg";4)  // works
Run Code Online (Sandbox Code Playgroud)

幕后发生了什么?

Ale*_*bin 1

我认为问题出在“gg”上 - 它是一个列表,因此无论您尝试插入一条记录还是多条记录,插入都会感到困惑。这:

`t insert (`a;"g";4)
Run Code Online (Sandbox Code Playgroud)

工作得很好。不幸的是,我不知道其他解决方法,但给出insert长度为一的记录列表:

`t insert (enlist `c;enlist "gg";enlist 4)
Run Code Online (Sandbox Code Playgroud)

我不确定发生了什么upsert,但它可能与通过修改实现它有关:.[;();,;]