官术网_书友最值得收藏!

Working with static columns

Let's say that we've decided, in our MyStatus application, that when a user creates a new account, we also require them to create an initial status update. In this workflow, we'll end up creating a new user record at the same time as when we create their first status update, which is to say that we'll be populating all the columns of the users_with_status_updates table in a single statement:

INSERT INTO "users_with_status_updates" 
("username", "id", "email", "encrypted_password", "body")
VALUES (
'alice',
76e7a4d0-e796-11e3-90ce-5f98e903bf02,
'alice@gmail.com',
0x8914977ed729792e403da53024c6069a9158b8c4,
'Learning Cassandra!'
);

It's worth emphasizing that even though this is a single INSERT statement, we're actually doing two separate things:

  • Assigning the email and encrypted_password values to every row whose username value is alice
  • Creating a new row in the alice partition, with Learning Cassandra! as the value of body

Let's take a look at the contents of the table so far:

SELECT * FROM "users_with_status_updates";

Looking at the output, we'll observe that it's just what we'd expect (I've omitted the encrypted_password column to save space):

The single row shown in the preceding figure is precisely what we wrote with the INSERT statement earlier. So far, we haven't seen any special behavior for static columns. To see static columns in action, let's add another status update to the table:

INSERT INTO "users_with_status_updates" 
("username", "id", "body")
VALUES ('alice', NOW(), 'Another status update');

Note that in this case, we did not specify values for either of the static columns; we provided the partition key, the clustering column, and a value for the non-static data column body. Now, let's take a look at the contents of the table:

SELECT * FROM "users_with_status_updates";

The output is as follows:

Now, the effect of the STATIC column declaration is clear: both rows have the e-mail address we assigned to the first row even though we did not specify an email value in our second INSERT query.

主站蜘蛛池模板: 雅江县| 邢台县| 淮安市| 宁夏| 南京市| 浦县| 奉节县| 鄢陵县| 错那县| 安宁市| 彝良县| 如东县| 融水| 景宁| 峡江县| 库尔勒市| 开平市| 东乡族自治县| 灵寿县| 桂东县| 民丰县| 周至县| 河西区| 宝鸡市| 怀宁县| 获嘉县| 苍山县| 大姚县| 扎鲁特旗| 廉江市| 青岛市| 西乌珠穆沁旗| 普兰县| 叶城县| 成安县| 稻城县| 新郑市| 乳源| 深泽县| 临沂市| 昌江|