如何使用组合键为表组织CRUD

时间:2012-12-17 13:37:05

标签: sql sql-server crud

我有一个表来存储格式为 param name / param value 的简单参数。但它的主键是复合键。

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

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
    )
) 

1 个答案:

答案 0 :(得分: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

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

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