2016-05-19 2 views
0

Я создал UDT -cqlsh: Вставка значения в UDT

CREATE TYPE home.my_object (
    id text, 
    type text, 
    quantity int, 
    critical boolean, 
    count int, 
    stock text, 
    envelope boolean 
); 

ALTER TABLE home.product ADD my_objects list<frozen<my_object>>; 

Я написал сценарий и попытался бежать против БД для выполнения вставки/обновления, но получаю сообщение об ошибке

Вот мой script-

 Update home.product set my_objects[''] = { 
     id: '3.MYFIT-LTR-DYN', 
     type: 'COMPONENT', 
     quantity: null, 
     critical: '', 
     count: null, 
     stock:'', 
     envelope:'' 
    } where id = 'FIT-GI'; 

Когда я выполнения этого заявления я получаю ниже error-

 code=2200 [Invalid query] message="Invalid STRING constant() for "idx(my_objects)" of type int" 

ответ

1

DataType для критических и конверта булево, так что вы должны использовать значение, как True/False

Если вы хотите обновить конкретный индекс в списке, то ваш запрос будет:

Update home.product set my_objects[0] = { 
     id: '3.MYFIT-LTR-DYN', 
     type: 'COMPONENT', 
     quantity: null, 
     critical: true, 
     count: null, 
     stock:'', 
     envelope:true 
    } where id = 'FIT-GI'; 

Примечание: Заменить 0 с нужным индексом

Если вы хотите добавить значения к существующему списку, то ваш запрос будет:

Update home.product set my_objects = my_objects + [{ 
     id: '3.MYFIT-LTR-DYN', 
     type: 'COMPONENT', 
     quantity: null, 
     critical: true, 
     count: null, 
     stock:'', 
     envelope:true 
    }] where id = 'FIT-GI'; 

Если вы хотите заменить значение my_objects полностью то:

Update home.product set my_objects = [{ 
     id: '3.MYFIT-LTR-DYN', 
     type: 'COMPONENT', 
     quantity: null, 
     critical: true, 
     count: null, 
     stock:'', 
     envelope:true 
    }] where id = 'FIT-GI'; 
Смежные вопросы