본문 바로가기

DataBase

MSSQL 문법- cursor/trigger

반응형


커서의 기본 

■ 커서란?

일반 쿼리문은 WHERE 절을 만족하는 결과 집합을 보여주거나 WHERE 절을 만족하는 데이터에 대한 변경처리를 수행한다.

따라서 열 단위로 수행된다고 할 수 있다. 그런데 행 단위로 일을 수행하고 싶을 때는 어떻게 해야할까?

그 때 사용할 수 있는 것이 '커서'이다. 커서는 특정 조건을 만족하는 행을 추출하고, 행을 대상으로 특정한 처리를 해야 하는 경우에 사용한다.

출처: https://elandda.tistory.com/22 [E.LAND DA]

 

행의 집합을 다루는데 제공해주는 편리한 기능

SQL Server의 성능을 느리게 하는 요인이 될 수 있으므로 특별한 경우가 아니면 되도록 사용하지 않을 것을 권장함

 

커서의 작동순서 

 

커서의 선언

 

커서의 열기

 

커서에서 데이터 가져오기

 

데이터 처리 

 

커서 닫기 

 

커서의 해제

 

 

DECLARE @index INT, @age INT , @byear INT
SET @index = 0;

DECLARE cur CURSOR FOR --커서를 멀로 만들 것인지
SELECT birthYear FROM userTBL;

OPEN cur
FETCH NEXT FROM cur INTO @byear; 

WHILE @@FETCH_STATUS =0 
BEGIN
     SET @age += (YEAR(GETDATE()) - @byear) +1;
	 SET @index +=1 ;
	 FETCH NEXT FROM cur INTO @byear;
END

CLOSE cur
DEALLOCATE cur

PRINT '회원들의 평균 나이는' +CAST((@age/ @index) AS VARCHAR(5))

트리거의 개념 >> 트리거의 개요

개요

제약 조건과 더불어서  데이터의 무결성을 위한 또다른 기능

DML ,DDL LOGON트리거 세가지가 있음

테이블 또는 뷰에 부착되는 프로그램 코드

저장 프로시저와 비슷하게 작동하지만 직접 시행시킬 수 는 업고 오직 해당 테이블이나 뷰에 이벤트 (입력,수정, 삭제)가 밸생할 경우에만 실행됨

저장프로시저와 달리 매개변수나 리턴값을 사용할 수 없음

 

 

 

트리거 설정후 2개의 행이 동시에 적용이 된다.

 

CREATE OR ALTER TRIGGER trg_BackupUser ON userTBL
AFTER UPDATE, DELETE --삭제 또는 수정	
AS 

BEGIN
   DECLARE @trgType NVARCHAR(3)--트리거 타입
   IF (COLUMNS_UPDATED()>0) --업데이트 되었다
   BEGIN
   SET @trgType = '수정';

   INSERT INTO backup_uesrTBL
   SELECT userID, name, birthYear, addr, mobile1,
		  mobile2, height,mDate,@trgType FROM deleted;		

   END
   ELSE -- 삭제
   BEGIN
   SET @trgType = ' 삭제';
END
  INSERT INTO backup_uesrTBL
   SELECT userID, name, birthYear, addr, mobile1,
		  mobile2, height,mDate,@trgType FROM deleted;		
END
GO

 삭제규칙하고 업데이트 규칙 둘다 계단식 배열로 바꿔야함!

 

SQL SERVER  2019구성관리자 

 

 

전체 텍스트 인덱스와 전체 텍스트 카탈로그

>> 전체 텍스트 인덱스 

신문기사와 같이 텍스트로 이루어진 문자열 데이터의 내용을 가지고 생성한 인텍스를 말함

전체 텍스트 인덱스가 저장되는 가상의 공간

전체 텍스트 인덱스가 생성되기 전에 생성해 놓아야함

전체 채우기

 

변경내용 추적기반 채우기

 

증분 타임스탬프 기반 채우기

채우기 방법
전체 채우기

처음 전체 텍스트 인덱스를 생성할 때 지정한 열의 모든 데이터 형에 대해서 인덱스를 생성하는 것을 말한다.

변경 내용 추적 기반 채우기

전체 채우기를 수행한 이후에, 변경된 내용을 채우는 것을 말한다.

증분 타임스탬프 기반 채우기

증분 채우기는 마지막 채우기 후 추가, 삭제, 수정된 행에 대해서 전체 텍스트 인덱스를 업데이트 한다.

 

CREATE FULLTEXT CATALOG

 

 

 

 

위에서 코딩한 부분과 동일한 결과를 얻을 수 있다 .

반응형