2016-05-19 14 views
0

Ich habe eine UDT erstellt -cqlsh: Wert in UDT Einfügen

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>>; 

ich ein Skript geschrieben und versucht, gegen den db zu laufen insert/update durchzuführen, aber immer Fehlermeldung

Hier ist mein 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'; 

Wenn diese Aussage ist Ausführung ist immer unter fehler-

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

Antwort

1

Datentyp für kritische und Umschlag ist boolean, so dass Sie als True/False

Wenn Sie bestimmten Index verwenden möchten Wert in der Liste dann Ihre Anfrage wird aktualisieren:

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'; 

Hinweis: ersetzen Sie 0 mit dem gewünschten Index

Wenn Sie Werte in die bestehende Liste hinzuzufügen, dann Ihre Frage wird sein:

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'; 

Wenn Sie Wert von my_objects ersetzen vollständig dann:

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';