如何在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
相关产品推荐
相关产品推荐

