私はテーブルの入札の最高価格をテーブルのオブジェクトに自動的に挿入するトリガーを探しています。 0から1に変わります。SQLでのトリガーの問題
私はObjectNumber、endprice(null)、closed?(bit)(nullでない、デフォルト0)の値を持つテーブルObjectを取得しています。
値(Objectnumber、ユーロ(プリヴェ入札の)、ユーザ名)を持つテーブルの入札は
これは私が現在得たもので、
CREATE TRIGGER AF5 ON objects
FOR INSERT, UPDATE
AS
BEGIN
DECLARE @objectnumber numeric(10)
DECLARE @endprice numeric(7,2)
DECLARE @closed? bit
SET @objectnumber = (SELECT objectnumber from inserted)
SET @endprice =(SELECT endprice from inserted)
SET @closed? =(SELECT closed? from inserted)
IF EXISTS (
SELECT subjectnumber
FROM inserted
WHERE closed? = 1 AND endprice = NULL
)
BEGIN
PRINT ('Found')
update objects set endprice = (
SELECT MAX(b.euro)
from bids b INNER JOIN objects v
on @objectnumber = b.objectnumber
where @closed? = 1
)
END
ELSE
BEGIN
RAISERROR ('Error', 1, 1)
ROLLBACK
END
END
GO
私は入れませんエラーが メッセージ512であります、レベル16、状態1、プロシージャAF5、行8 [バッチ開始行3834] サブクエリが2つ以上の値を返しました。 =、!=、<、< =、>、> =、またはサブクエリが式として使用されている場合は、これは許可されません。
を
@@ROWCOUNT
変数をチェックし、問題は何ですか? –サブクエリが2つ以上の値を返しました。サブクエリが=、!=、<, <= , >、> =、またはサブクエリが式として使用されているときは、これは許可されません。 – Josh
エラーが発生すると、サブクエリの1つが2つ以上の値を返していますが、これは許可されていません。サブクエリを別々に実行し、複数の値を返すかどうかを確認し、サブクエリを更新して1つの値のみを返すようにします(つまり、複数の値が返される必要がある場合はサブクエリがないようにコードを再構成します)。挿入されたデータと一致する入札単価表には、おそらく複数のobjectnumber値があります。 –