SQL 서버 출력 절 값을 반환합니다 각각의 행에 의해 영향을 받았다는 삽입 업데이트하거나 삭제 문입니다.
출력 절 반환하는 데이터의 복사본을 삽입할 수 있는 별도의 테이블 도중 실행하는 쿼리가 있습니다.
이 절은 감사 목적으로 테이블의 데이터 변경을 추적하는 데 가장 일반적으로 사용됩니다.
출력 절은 아래에 주어진 것처럼 두 개의 가상 테이블에 액세스 할 수 있습니다.
- 삽입 포함하는 새로운 행을(삽입 또는 업데이트)
- 삭제를 포함하는 오래된 사본의 행(비어 있음 삽입)
출력 절에 액세스할 수 있는 모든 테이블의 열도,사람들은 부품의 삽입하는 문입니다.
구문
---- for insertINSERT INTO tablename OUTPUT inserted . *INTO @output_tablenameVALUES (col_value1 ,col_value2 ,..) ---for delete DELETE FROM tablenameOUTPUT deleted.* INTO @output_tablename WHERE Condition
CREATE TABLE dbo.Item (ItemId Int identity(1,1),ItemName Varchar(20),ItemPurchasedDate Datetime)
출력 사용 절 삽입을 가진 문
를 삽입하려면 출력 절 결과를 테이블로 먼저 선언 변수 테이블에 저장하는 결과 출력의 조항,그리고 사용하여 출력 caluse 구문을 저장 결과 테이블로 변수입니다.
삽입 된 레코드에 액세스하려면 Output 절은 새 행을 포함하는 삽입 된 가상 테이블을 사용합니다.
에서 다음과 같은 문장, 우리는 하나 삽입 기록 항목에서 테이블과 출력 사용 절을 저장소 레코드를 테이블로 variable@insert_log 아래와 같이
DECLARE @insert_log TABLE(ItemId Int, ItemName Varchar(20), ItemPurchasedDate Datetime )INSERT INTO dbo.Item OUTPUT inserted.ItemId, inserted.ItemName, inserted.ItemPurchasedDateINTO @insert_logVALUES ('Item1' , Getdate()) SELECT * FROM dbo.Item;SELECT * FROM @insert_log ;
으로 당신은 출력을 볼 수 있는 항목의 테이블과 테이블이 변수, 삽입하는 동안 새로운 기록으로 항목이블,ItemId 지 않은 부분에 삽입의 문입니다. 그러나 출력 절의 ItemId 열에 액세스할 수 있습니다.
를 사용하여 출력 caluse 업데이트 문
에 대한 기록을 업데이트에 액세스 중 하나를 사용할 수 있습니다 삽입 또는 삭제된 가상 테이블과 출력을 절대로 당신의 요구 사항입니다.
액세스하려는 경우 오래된 값이었 업데이트하기 전에 새로운 값을 다음 사용할 수 있는 삭제된 가상 테이블 및 액세스하려는 경우 새로운 값을 업데이트할 수 있습니다 다음 사용이 삽입되는 가상 표로 출력한다.
에서 다음과 같은 문을 업데이트 항목에서 값이 Item 테이블과 출력 사용 절을 저장 오래된 값들에 대한 기록으로는 변수 테이블@update_log.오래된 레코드에 액세스하려는 경우 삭제 된 가상 테이블을 사용합니다.
DECLARE @update_log TABLE( ItemId int, ItemName Varchar(20), ItemPurchasedDate Datetime )UPDATE dbo.Item SET ItemName ='Item2'OUTPUT deleted.ItemId, deleted.ItemName, deleted.ItemPurchasedDateINTO @update_logWHERE ItemId =1SELECT * FROM dbo.Item;SELECT * FROM @update_log
당신이 볼 수 있듯이,우리가 세 개의 출력으로 다음과 같이
1:그것은 테이블을 출력 업데이트하기 전에 기록합니다.
2:레코드를 업데이트 한 후 테이블 출력입니다.
3:업데이트하기 전에 있던 이전 레코드 값을 보유하는 테이블 변수에 의해 반환 된 출력입니다.
새 레코드에 액세스하려는 경우 삭제 된 대신 삽입 된 가상 테이블을 사용할 수 있습니다.
출력 절 삭제 문
다음 문을 사용하여 삭제 쿼리를 삭제에 대한 기록 ItemId=1Item 테이블 및 저장 삭제된 레코드로 변수 테이블을 사용하여 출력 caluse.
삭제 된 레코드 출력 절에 액세스하려면 행의 이전 복사본이 포함 된 삭제 된 가상 테이블을 사용하십시오.
DECLARE @delete_log TABLE( ItemId Int, ItemName Varchar(20), ItemPurchasedDate Datetime )DELETE FROM dbo.Item OUTPUT deleted.ItemId, deleted.ItemName, deleted.ItemPurchasedDateINTO @delete_logWHERE ItemId =1SELECT * FROM dbo.Item;SELECT * FROM @delete_log
당신이 볼 수 있듯이,사용할 수 있는 데이터가 없에 항목이블로 삭제 하지만 출력 절에 삽입하는 삭제된 레코드를 테이블로 variable@delete_log 는 것은 매우 유용한 추적을 유지하기 위해 삭제된 레코드입니다.
추천
SQL Server 임시 테이블
총 조회수 822 회,오늘 조회수 8 회