2017-09-19 10 views
0

SQL Serverでトリガーするのはかなり新しいので、誰かが助けてくれ、少なくとも私を正しい方向に向けることを望んでいます。テーブルに挿入する前にデータを検証するSQL Serverトリガー

私は、挿入前にこれらのレコードを検証したいジョブに関連して複数のレコードが挿入されているテーブルを持っており、要件を満たさない場合はraiseerrorを実行します。

私はすべてが iJCMasterIDによってグループ化され、私は基本的に CustCharge = Jobtotalがだけ含まれているジョブのことを確認する必要があり、それが簡単に私が

SELECT TOP (100) PERCENT 
    iJCMasterID, 
    SUM(CASE WHEN ubJCTxSTNoProint = 1 
       THEN fTransQty * ufJCTxSTCustomerCharge 
       ELSE 0 
     END) AS CustCharge, 
    SUM(CASE WHEN iStockID = 5774 THEN 1 ELSE 0 END) AS ValidateJoblot, 
    SUM(CASE WHEN iStockID = 5774 THEN fUnitPriceExcl * fTransQty ELSE 0 END) AS JobTotal 
FROM 
    dbo._btblJCTxLines 
GROUP BY 
    iJCMasterID, dStartDate 
HAVING 
    (SUM(CASE WHEN iStockID = 5774 THEN 1 ELSE 0 END) > 0) 

を行うにしようとしていますかを説明するために作成しようとするビューを作成している

Having句が戦場に出ている仕事の多く

あなたが助けるために必要となるその他の情報があれば、私はのために

と感謝を教えてくださいあなたの事前に助け

これは私がこれまで試してみましたものですが、あなたはINSTEAD OF UPDATE,INSERTトリガーを使用することができますトリガと検証を行いたい場合は

USE [*******DB] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE TRIGGER [dbo].[ValidateCC] ON [dbo].[_btblJCTxlines] for insert, update AS 

begin 
if exists(select COUNT(*) from inserted)--drop TRIGGER [dbo].[JobOverCreditLimit] 


declare @Jobamount float 

SET @Jobamount = (select sum(fLineTotalExcl) as JobAmount from inserted 
where iStockID = 5774 
GROUP BY inserted.iJCMasterID) 


declare @CCAmount float 

SET @CCAmount = (select sum(fTransQty * ufJCTxSTCustomerCharge) as JobAmount from inserted 
where ubJCTxSTNoProint = 1 
GROUP BY inserted.iJCMasterID) 


declare @Validation float 
set @Validation = (@Jobamount - @CCAmount) 

IF @Validation <> 0 
BEGIN 
DECLARE @EMSG VARCHAR(500) 

SET @EMSG = 'Customer Charge R' + CAST(@CCAmount AS VARCHAR(20))+' does not equal Job Amount R'+ CAST(@CCAmount AS VARCHAR(20))+ '' 
BEGIN 
rollback tran 
RAISERROR (@EMSG ,16, 1) 
end 
END 
end 
+3

なぜその値を保存するのですか?なぜあなたはそれを必要時に計算しないのですか? –

+0

こんにちはGordon元の投稿を編集しましたが、実際には別のテーブルに値を保存する必要はありません。挿入する前に検証するか、エラーを発生させて参照用のポストにトリガーを挿入しましたが、動作している –

答えて

関連する問題