テスト、チェックなどのテキストボックスにキーワード入力を取得しています。それらのキーワードが存在するかどうかを確認するときにデータベースに個々の行として挿入し、存在する場合は更新するか、挿入します。これを表すこのキーワード 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