有没有办法命名类似于SQL中的列的字段?
我的想法是,我可能想要插入一条客户记录: - 名称 - 电话 - 电子邮件 - 网站
某些字段有时可能存在,其他字段可能不存在,并且它们可能以不同的顺序呈现。
是否有其他方法可以将记录插入通过字段名称引用它们的元组?
像伪代码那样的东西:
s:insert(1, "name": "foo name", "phone": "foo phone")
s:insert(2, "phone": "bar phone", "name": "bar name", "email": "bar email")
答案 0 :(得分:2)
在为空间定义模式时,可以使用尚未记录的space:format()
函数指定字段名称,然后可以将这些名称用于索引定义。 [available in Tarantool 1.7+]
示例代码:
box.once("testapp:schema:1", function()
local customer = box.schema.space.create('customer')
customer:format({
{'customer_id', 'unsigned'},
{'name', 'string'},
})
customer:create_index('customer_id', {parts = {'customer_id'}})
local account = box.schema.space.create('account')
account:format({
{'account_id', 'unsigned'},
{'customer_id', 'unsigned'},
{'balance', 'unsigned'},
{'name', 'string'},
})
account:create_index('account_id', {parts = {'account_id'}})
account:create_index('customer_id', {parts = {'customer_id'}, unique = false})
box.snapshot()
end)
很遗憾,您无法在space:insert()
或类似功能中使用字段名称。