0

我创建了一个表帖子。当我提出请求选择时:

return $this->db->query('SELECT * FROM "posts" WHERE "id" IN(:id) LIMIT '.$this->limit_per_page, ['id' => $id]);

我得到错误:

PRIMARY KEY 列“id”不能被限制(前面的列“post_at”要么不受限制,要么受非 EQ 关系限制)

我的表转储是:

CREATE TABLE posts (
  id       uuid,
  post_at  timestamp,
  user_id  bigint,
  name     text,
  category set<text>,
  link     varchar,
  image    set<varchar>,
  video    set<varchar>,
  content  map<text, text>,
  private  boolean,
  PRIMARY KEY (user_id,post_at,id)
  )
  WITH CLUSTERING ORDER BY (post_at DESC);

我读了一些关于主键和集群键的文章,并且理解,当有一些主键时 - 我需要使用 operator =IN。就我而言,我不能使用一个主键。你建议我改变表结构,那个错误会消失吗?

4

1 回答 1

1

我的虚拟表结构

CREATE TABLE posts (
  id       timeuuid,
  post_at  timestamp,
  user_id  bigint,
  PRIMARY KEY (id,post_at,user_id)
  )
  WITH CLUSTERING ORDER BY (post_at DESC);

在插入一些虚拟数据之后

我跑了查询select * from posts where id in (timeuuid1,timeuuid2,timeuuid3);

我使用 cassandra 2.0 和 cql 3.0

于 2014-08-30T12:03:58.440 回答