나는 SQL 서버 2014을 사용하고 I (이 데이터를 삽입) 트리거를 만들려면 다음 코드가 있습니다트리거 문을 만들어 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' 의사 테이블을 살펴볼 필요가 있습니다. 이러한 행을 기반으로 다른 행을 삽입 및/또는 업데이트 할 수는 있지만 간단히하기 위해 각 작업 유형별로 하나씩 ** 별도의 세 가지 ** 트리거를 사용하는 것이 좋습니다 ('FOR INSERT' - only 'FOR UPDATE'는 기존의 행만 업데이트하고,'FOR DELETE'는 기존의 행만 삭제합니다.) –