0

単純なパラメーターを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
    )
) 
4

1 に答える 1

0

これを正しく取得した場合、user1がそれらのレコードを入力し、user1がそれらを編集して、{first_comp_id:12、second_comp_id:5}で新しいレコードを追加できます。

ユーザーへの一意の参照を含む列を追加する必要があります

次に、データベースにアクセスするコードに、ユーザーが正しくなければならないというチェックを追加します

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

または、完全にdbレベルで使用したい場合は、更新前にトリガーを使用して、正しいユーザーかどうかを確認できます。

挿入する前に、1番目と2番目が別のユーザーによって使用されていないかどうかを確認してください

于 2012-12-17T15:41:14.337 に答える