在SQL表中存储键值对,然后更新和检索

时间:2017-01-17 05:49:11

标签: sql-server database

在我的应用程序中,我遇到了一个数据库设计,我需要考虑以下几点:

  • 用户将针对关键字输入一些值(我想在数据库表中存储为键值对 - 表格将具有列名“key”和“value”。)
  • 用户可以在以后的时间点更新相同的密钥及其值(保存后很难更新相同的密钥,因为我必须弄清楚哪个密钥已被修改。)

请帮助我采取任何其他方法来保存数据库中的键值对。并且将来更新密钥名称及其值可以被跟踪,以便我可以更新它。

示例:

已定义模板。在此模板中,有一些未知属性,应由客户端更新以执行它。

假设一个属性是“## 路径 ##”。这里路径应该用实际路径替换。

因此,我们必须从模板中找出所有这些属性,并在UI中显示为表格(键 - >路径,值 - > [空文本框])。用户可以针对此路径设置值。我们必须保存它以备将来使用,因为用户可以重新触发它。

但在重新触发之前,他可以将密钥从“## 路径 ##”更改为“## ActualPath ##”。在这种情况下,我需要找出“实际路径”是“路径”的更新名称,这对我来说非常困难。

1 个答案:

答案 0 :(得分:1)

它看起来很紧张;我的意思是我真的不明白你究竟是什么问题。你回答了自己的问题。

创建一个像这样的表:

KVPTable
    Key, VARCHAR(whatever), PrimaryKey
    Value, VARCHAR(whatever)

由于Key是主键,因此不允许重复输入。您可以对Key执行UPDATE语句以更新任何或两个字段。

UPDATE KVPTable SET Key = 'newKey' WHERE Key = 'oldKey'
UPDATE KVPTable SET Key = 'newKey', Value = 'newValue' WHERE Key = 'oldKey'
UPDATE KVPTable SET Value = 'newValue' WHERE Key = 'key'

这将确保只更新一条记录。在调用statement之前,您可以执行另一个SELECT语句来检查是否已存在新的Key。即使你没有检查它,也会引发异常,你应该抓住它。