0

我有一个表格来存储格式参数名称/参数值的简单参数。但它的主键是复合键。

使用锁定组织添加/更新/删除参数的最佳方法是什么。因此,例如,如果有人开始将下一个参数放入表中

first_comp_id   second_comp_id  paramName   paramValue

12              5               param_1     sdgfsdf
12              5               param_2     sdgfsdf
12              5               param_3     sdgfsdf
12              5               param_4     sdgfsdf

其他任何人都不能使用 {first_comp_id:12, second_comp_id:5} 添加/编辑或删除任何记录?

在我的表结构下方(我稍微更改了名称,但想法相同):

CREATE TABLE [dbo].[SomeTable](
[first_comp_id] [int] NOT NULL,
[second_comp_id] [int] NOT NULL,
[paramName] [varchar](50) NOT NULL,
[paramValue] [varchar](200) NOT NULL,
    PRIMARY KEY 
    (
    [first_comp_id] ASC,
    [second_comp_id] ASC,
        [paramName] ASC
    )
) 
4

1 回答 1

0

如果我理解正确,您让 user1 输入这些记录,并且 user1 可以编辑它们并使用 {first_comp_id:12, second_comp_id:5} 添加新记录

您需要添加一个包含对用户的唯一引用的 col

然后您将在访问数据库的代码中添加用户必须正确的检查

update sometable (paramValue) where first = ee and second = bb and name = rr and user = current user

插入会变成

IF not EXISTS (SELECT * FROM sometable WHERE  first = ee and second = bb and name = rr and user <> current user)
BEGIN
   insert into sometable (first,second, name, val, user)
  values (ee,bb,rr,vv,uu) 
END

或者如果您希望它完全在数据库级别上,您可以在更新之前使用触发器检查用户是否正确

在插入之前检查第一个和第二个是否未被其他用户使用

于 2012-12-17T15:41:14.337 回答