1
これで私のトリガーはこのエラーの原因です:メッセージ512、レベル16、状態1、プロシージャSofi_TERA_Trigger、行15 サブクエリが1つ以上の値を返しました。 =、!=、<、< =、>、> =、またはサブクエリが式として使用されている場合は、これは許可されません。SQL Serverのトリガーエラー - サブクエリが1つ以上の値を返しました
私はそれが私の "if"だと思ったが、私はそれを変更した(複数の "AND"条件の代わりに "IN"を使う)。私はまた、私のエラーを探しましたが、それはかなり多くのものに関連している可能性があります。
これはおそらく私が見ることができない非常に単純なものです。ここに私のトリガーがあります:
IF((Select inserted.Statut from inserted) IN ('*CLOT*','*CLTT*','*CONF*'))
有効な構文ではありません。
TRIGGER [dbo].[Sofi_TERA_Trigger]
ON [dbo].ZZ
AFTER UPDATE,INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF ((Select inserted.Statut from inserted) IN ('*CLOT*','*CLTT*','*CONF*'))
BEGIN
DECLARE @Id int;
DECLARE @Matricule varchar(10);
DECLARE @IdAction int;
DECLARE @NumeroOF int;
SELECT @NumeroOF = inserted.Ordre from inserted;
DECLARE OF_CURSOR CURSOR
LOCAL STATIC READ_ONLY FORWARD_ONLY
FOR
SELECT Id,Log.Matricule,IdAction from Log inner join (select max(Id) as maxID,Matricule from LOG where Log.NumeroOF = @NumeroOF group by Matricule) maxID
on maxID.maxID = Log.Id where Log.NumeroOF = @NumeroOF;
OPEN OF_CURSOR
FETCH NEXT FROM OF_CURSOR INTO @Id,@Matricule,@IdAction
WHILE @@FETCH_STATUS = 0
BEGIN
IF @IdAction!=13
BEGIN
IF @IdAction<=2
BEGIN
insert into Log(NumeroOF,Matricule,IdAction,Date,EstAdmin) values (@NumeroOF,@Matricule,13,GETDATE(),1);
END
ELSE
BEGIN
insert into Log(NumeroOF,Matricule,IdAction,Date,EstAdmin) values (@NumeroOF,@Matricule,2,GETDATE(),1);
insert into Log(NumeroOF,Matricule,IdAction,Date,EstAdmin) values (@NumeroOF,@Matricule,13,GETDATE(),1);
END
END
FETCH NEXT FROM OF_CURSOR INTO @Id,@Matricule,@IdAction
END
CLOSE OF_CURSOR;
DEALLOCATE OF_CURSOR;
END
END
:あなたはそれを変更する必要があります( '* CLOT *'、 '* CLTT *'、 '* CONF *')) ' – Lamak
ちょうど私が必要としていたことは、あなたが望むなら答えを出すことができます。私はそれを受け入れるでしょう。ありがとうございました :) –