我的修改页面上有一个文本框,其中包含数据库中的现有数据。此数据在 SQL Server 表中是单独的行,但在文本框中显示为用逗号分隔的单行。
例如:表
keyid name
--------------
101 ss
105 hh
109 tt
在我的网络表单中,它显示在像 ss,hh,tt
. 有一个桥接表 ( Keysproducts
),其中包含keyid
and 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
结尾