データベースからの既存のデータを保持する変更ページにテキストボックスがあります。このデータは、SQL Server テーブルでは個別の行ですが、テキスト ボックスではコンマで区切られた単一の行として表示されます。
例:テーブル
keyid name
--------------
101 ss
105 hh
109 tt
私のWebフォームでは、のようなテキストボックスに表示されます ss,hh,tt
。と ( に関連する製品)Keysproducts
を保持するブリッジ テーブル ( ) があります。keyid
productid
keyid
ここで私の問題は次のとおりです。
テキストボックスに既存のエントリとともにエントリを追加すると、重複する値が挿入されないというエラーメッセージが表示され、既存の ID が表示されます。以下は、そのための私のストアドプロシージャです。
keyname
行を挿入しない場合は存在するかどうかを確認し、そうでない場合は更新します。私のアプローチが間違っている場合は、私を導いてください。
create PROCEDURE [dbo].[modify]
(
@keyName nvarchar(256),
@productdbid uniqueidentifier
)
AS
Begin
declare
@productid uniqueidentifier,
@keyid uniqueidentifier,
@id uniqueidentifier;
declare @keydata table (keyid uniqueidentifier);
set @productid =(select ProductID from Products where ProductID = @productdbid );
Begin
if not exists(select keyname from keys where KeyName = @keyName)
begin
insert into Keys(KeyId, KeyName)
output inserted.KeyId into @keydata(keyid)
values (newid(), @keyName);
select @keyid = keyid from @keydata;
insert into KeysProducts(KeyId,productId)
values (@keyid, @productid);
end
else
begin
set @id = (select keyid from keys where KeyName = @keyName)
update keywords
set KeyId = @id, KeyName = @keyName
where KeyName= @keyName;
end
if not exists(select * from Keysproducts where ProductID = @productid and KeyId= @id)
begin
insert into Keysproducts(KeyId, ProductID)
values (@id, @productid);
end
else
begin
update Keysproducts
set KeyId = @id, productID = @productid;
end
end
end
終わり