You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GridDB Cloud集合容器中创建复合主键

如何在GridDB Cloud集合容器中创建复合主键

我来帮你搞定这个问题!要在GridDB Cloud的集合容器里设置复合主键(同时用Order_ID和Product_ID作为主键),只需要调整你Python脚本里的JSON请求参数就行,具体修改步骤如下:

关键修改点

原来你的脚本里用了"rowkey": True,这个参数的作用是让GridDB自动把第一个列设为单一主键,这就是为什么现在主键只有Order_ID的原因。要创建复合主键,我们需要做两个调整:

  • 移除或者把"rowkey": True改为"rowkey": false(复合主键模式下不需要这个单主键配置)
  • 在Order_ID和Product_ID这两个列的定义中,分别添加"primary_key": true属性,标记它们为复合主键的组成部分

修改后的完整脚本

#CreateOrderDetailsTable.py
import requests
import json

# Set table name
tableName = "OrderDetails"

# URL and authentication
url = "https://cloud5197.griddb.com:443/griddb/v2/gs_clustermfcloud****/dbs/******/containers"

headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Basic *********************',
  'User-Agent': 'PostmanRuntime/7.29.0'
}

# If table exists, drop it...
payload = json.dumps([
  tableName
])
response = requests.request("DELETE", url, headers=headers, data=payload)
print("Drop table result: ", response.status_code)

# Create table 
payload = json.dumps({
  "container_name": tableName,
  "container_type": "COLLECTION",
  # 移除了rowkey: True,因为我们要设置复合主键
  "columns": [
    {
      "name": "Order_ID",
      "type": "INTEGER",
      "primary_key": True  # 标记为复合主键的一部分
    },
    {
      "name": "Product_ID",
      "type": "INTEGER",
      "primary_key": True  # 标记为复合主键的一部分
    },
    {
      "name": "Quantity",
      "type": "INTEGER",
    },
    {
      "name": "Price",
      "type": "FLOAT"
    }
  ]
})
response = requests.request("POST", url, headers=headers, data=payload)
print("Create table result: ", response.status_code)

验证说明

运行修改后的脚本,GridDB就会创建一个以Order_ID和Product_ID共同作为复合主键的集合容器了。你可以通过GridDB Cloud的控制台或者后续的查询操作来验证主键是否生效——只有当这两个列的组合值唯一时,才能插入数据,符合复合主键的预期行为。

备注:内容来源于stack exchange,提问作者Danilo Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 20:14:37