テスト、チェックなどのテキストボックスにキーワード入力を取得しています。それらのキーワードが存在するかどうかを確認するときにデータベースに個々の行として挿入し、存在する場合は更新するか、挿入します。これを表すこのキーワード ID と項目id をブリッジ テーブルに挿入する必要があります。既存のキーワードを挿入すると、エラーがスローされます。
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Cannot insert the value NULL into column 'KeywordId', table 'dbo.Keywordsitems'; column does not allow nulls. INSERT fails.
以下のストアドプロシージャを使用しています
ALTER PROCEDURE [dbo].[InsertKeywords]
(
@keywordName nvarchar(256),
@itemid uniqueidentifier
)
AS
begin
declare
@itemid uniqueidentifier,
@keywordid uniqueidentifier,
@id uniqueidentifier;
declare @keyworddata table (keywordid uniqueidentifier);
set @id = (select KeywordId from keywords where KeyName=@keywordName)
set @itemid =(select itemId from Items where ItemID = @itemid);
if not exists(select keyname from keywords where KeyName = @keywordName)
begin
insert into Keywords(KeywordId,KeyName)
output inserted.KeywordId into @keyworddata(keywordid)
values (newid(),@keywordName);
select @keywordid = keywordid from @keyworddata;
insert into Keywordsitems(KeywordId,ItemId)
values (@keywordid,@itemid);
end
else
begin
update keywords set KeyName=@keywordName where KeywordName= @keywordName;
insert into KeywordsResources(KeywordId,itemId) values (@id,@itemid);
end
end