私はトリガを作成するために、次のコード(それはデータを挿入)を持つSQL Serverの2014を使用しています:まだそれらを更新し、他に存在しない場合にのみ、私は値を挿入するにはどうすればよいトリガーステートメントを作成してSQL Serverテーブルに値を挿入する方法は、まだ存在しない場合にのみ作成します。
CREATE TRIGGER [dbo].[INSERT_TR_LAB_TESTS_RESULTS]
ON [dbo].[TRANSACTIONS_TBL]
AFTER INSERT, UPDATE, DELETE
AS
DECLARE @SERVICE_CODE INT
DECLARE @INVOICE_NO INT
DECLARE @PATIENT_TYPE_ID INT
DECLARE @INSURANCE_COMPANY_ID INT
DECLARE @INSURANCE_CARD_NO VARCHAR(50)
DECLARE @SPONSER_TYPE_ID INT
DECLARE @QTY_OF_SERVICES INT
DECLARE @PATIENT_NAME_ID INT
DECLARE @LAB_TEST_CATEGORY_ID INT
DECLARE @LAB_TEST_NAME nvarchar(100)
DECLARE @LAB_TEST_RESULT VARCHAR(100)
DECLARE @RESULT_REFERENCE_VALUE nvarchar(70)
DECLARE @TEST_UNIT nvarchar(50)
INSERT INTO LAB_TESTS_RESULTS (SERVICE_CODE, INVOICE_NO, PATIENT_TYPE_ID,
INSURANCE_COMPANY_ID, INSURANCE_CARD_NO,
SPONSER_TYPE_ID, QTY_OF_SERVICES, PATIENT_NAME_ID,
LAB_TEST_CATEGORY_ID, LAB_TEST_NAME,
LAB_TEST_RESULT, RESULT_REFERENCE_VALUE, TEST_UNIT)
SELECT
t1.SERVICE_CODE, t1.INVOICE_NO, t1.PATIENT_TYPE_ID,
t1.INSURANCE_COMPANY_ID, t1.INSURANCE_CARD_NO,
t1.SPONSER_TYPE_ID, t1.QTY_OF_SERVICES, t1.PATIENT_NAME_ID,
t2.LAB_TEST_CATEGORY_ID, t2.LAB_TEST_NAME,
t2.LAB_TEST_RESULT, t2.RESULT_REFERENCE_VALUE, t2.TEST_UNIT
FROM
TRANSACTIONS_TBL t1
CROSS JOIN
LAB_TESTS_NAMES_TBL t2
WHERE
t1.SERVICE_CODE = t2.SERVICE_CODE
GO
を?あなたのテーブルのキーはSERVICE_CODE
であると仮定すると、
あなたのテーブルのキーが何であるか、それは ' SERVICE_CODE'? –
あなたのトリガー内 'Inserted'と' Deleted'疑似テーブルを見てする必要がある - それらは、行が挿入、削除または更新されているが含まれています。これらの行に基づいて、他の行を挿入したり更新したりすることはできますが、簡単にするために**それぞれの操作のための3つの別々の**トリガーを付けることをお勧めします( 'FOR INSERT'のみ'FOR UPDATE'は既存の行のみを更新し、' FOR DELETE'は既存行を削除します)。 –