我有一个表来存储格式为 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
)
)
答案 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
或者如果你想在数据库级别完全使用它,你可以使用触发器 更新前检查用户是否正确
在插入检查之前,第一个和第二个用户是否未被其他用户使用