如果它有帮助,我想将它们全部设置为NULL,就像在update foo set barcol = null
中一样。此特定命令导致对缺少主键约束的抱怨。对于select语句,可以通过添加子句allow filtering
来解决类似的错误。在这种情况下是否有类似的解决方法?如果没有,最简单的方法是什么?
更新:有什么比这个不太好的解决方案更好吗?
cqlsh -e 'select id from foo' | head -n -3 | tail -n +4 | \
xargs -I{} cqlsh -e "update foo set barcol = null where id = '{}'"
答案 0 :(得分:1)
如果您只删除列并重新创建它以确保内容为null,我已经看到了有关C *中问题的讨论。我认为重命名列,添加新列然后删除重命名的列是最安全的方法。
所以
ALTER TABLE RENAME col TO col_deleted
ADD COLUMN col <type>
ALTER TABLE DROP COLUMN col_deleted
在我看来,这是确保只有空值的最佳方式。