728x90

MS-SQL 20

중첩트리거(nested trigger), 재귀트리거(recursive trigger)

1. 중첩 트리거 : 트리거가 동작해서 다른 테이블의 값을 변경한다면 이런 동작을 CASCASE INSERT(또는 UPDATE, DELETE) 라고 한다. 이렇게 CASCADE 동작을 할 때 대상이 되는 테이블에 또 트리거가 걸려 있다면 이 트리거도 동작 하게 된다. 이런식으로 중첩 트리거는 SQL7.0에서 32단계 까지 동작 할 수 있다. sp_configure ‘nested trigger’, 0; -- 0-> 1로 변경해주면 실행 됨 GO reconfigure; GO 2. 재귀 트리거(Recursive Trigger) : 트리거가 자기 자신을 다시 부르는 것을 재귀 트리거라고 한다. 이때 무한 루프에 빠지지 않도록 빠져 나오는 루틴을 처리해야만 한다. 재귀트리거는 default 가 off 되어 있다...

MS-SQL 2022.12.10

AFTER 트리거, INSTEAD OF 트리거

AFTER 트리거와 INSTEAD OF 트리거 - Version : SQL Server 2005, 2008, 2008R2, 2012 트리거는 SQL Server에서 이벤트가 발생하면 자동으로 실행되는 특수한 종류의 저장 프로시저이다. DML, DDL, LOGON 트리거를 생성 할 수 있다. 트리거는 FOR|AFTER 와 INSTEAD OF 인수가 있다. FOR|AFTER : AFTER는 DML 트리거를 지정한 모든 작업이 성공적으로 실행되었을 때만 트거가 실행도록 지정한다. 모든 참조 연계 동작 및 제약 조건 검사도 이 트리거가 실행되기 전에 성공해야 한다. INSTEAD OF : 트리거를 시작하는 SQL문 대신 DML 트리거가 실행되도록 지정한다. DDL 또는 LOGON 트리거에 대해서는 INSTEAD..

MS-SQL 2022.12.08

트리거란? (+예제)

트리거란? 트리거(Trigger) 는 방아쇠라는 뜻인데, DBA라면 기본으로 자주 접할 것이고, 소규모 회사의 개발자라면 직접 DB까지 관리해야 하는 경우도 있는데, 어느정도는 알아두면 좋을 것 같습니다. 개념이나 자세한 이론은 검색하면 많이 나오니, 간단하게 설명하고, 어떻게 사용하면 되는지 간단한 예제로 설명하겠습니다. 트리거는 Oracle 등 다른 RDMBS도 지원하는 기능인데, MS-SQL에서만 사용해 보았습니다. (그래서 제목을 MS-SQL로 달아놓았고, MS-SQL을 기준으로 설명합니다. Oracle 도 사용법 등은 조금 다르지만, 그 사용 목적은 다르지 않습니다.) 위의 뜻처럼 DB에서 어떤 특정 이벤트가 발생하면 자동으로(방아쇠 당기면 총알이 나가듯이) 무언가 실행이 된다는 것으로 보면 되..

MS-SQL 2022.12.08

커서란? (+예제)

커서 행 단위 작업을 효율적으로 하기 위한 방식으로 테이블에서 여러 개의 행을 조회한 후 쿼리의 결과를 한 행씩 처리하는 방식입니다. SELECT 한 결과(행 집합)를 반복 작업해줘야 할 경우 유용하게 사용 가능 한 방식입니다. 커서의 특징 1. 커서는 내장 SQL 문의 수행 결과로 반환될 수 있는 복수의 튜플들을 액세스 할 수 있도록 해주는 개념입니다. 2. 커서는 질의 수행 결과로 반환되는 첫 번째 튜플에 대한 포인터로 생각할 수 있습니다. 3. 커서를 사용하여 질의 결과로 반환될 수 있는 튜플들을 한 번에 하나씩 차례대로 처리할 수 있습니다. 커서 관련 명령어 DECLARE : 커서를 정의하는 등 커서에 관련된 선언을 하는 명령입니다. OPEN : 커서가 질의 결과의 첫 번째 튜플을 포인트 하도록 ..

MS-SQL 2022.12.08

MS-SQL 함수란? (스칼라, 테이블 반환 함수 등..)

시스템 즉 DBMS 가 제공하는 시스템 함수 말고 개발자들이 만들 수 있는 사용자 정의 함수를 살펴 보자 사용자 정의 함수는 2가지 유형 - 테이블 반환 함수,스칼라 반환 함수 1. 스칼라 함수 단일 데이터를 리턴하는 함수 입니다. 가장 많이 사용되고 있죠. 개인적으로는 이 유형만 씁니다. 시스템 함수들 대부분도 스칼라 함수입니다. ( AVG(),SUM() 등 ) CREATE FUNCTION 함수이름 ( 파라미터 데이터타입, 파라미터 데이터타입,… ) RETURNS 리턴값의 데이터타입 [WITH 함수_옵션 ] [AS] BEGIN FUNCTION BODY RETURN 단일한 리턴값 END 리턴값의 데이터 타입 중 text,ntext,timestamp 등은 해당되지 않습니다. 컴파일 때 에러 나옵니다. ( ..

MS-SQL 2022.12.08

MSSQL 날짜 변환표(GETDATE, CONVERT)

MSSQL 날짜 변환표 (기준날짜를 대상으로 CONVERT 실행하여 날짜 형변환) 번호 쿼리 결과 코드 0 CONVERT(CHAR(19), DATETIME, 0) 01 02 2000 1:14PM MM DD YYYY H:MM 1 CONVERT(CHAR(10), DATETIME, 1) 01/02/2000 MM/DD/YYYY 2 CONVERT(CHAR(8), DATETIME, 2) 00.01.02 YY.MM.DD 3 CONVERT(CHAR(8), DATETIME, 3) 02/01/00 DD/MM/YY 4 CONVERT(CHAR(8), DATETIME, 4) 02.01.00 DD.MM.YY 5 CONVERT(CHAR(8), DATETIME, 5) 02-01-00 DD-MM-YY 6 CONVERT(CHAR(8),..

MS-SQL 2022.12.07

컬럼에 AUTOINCREMENT 설정

MYSQL에서는 KEY값에다가 AUTO INCREMENT 라고 써주며 되었던 것 같은데, MSSQL에서는 조금 다른 것 같다. | 방법1. CREATE TABLE 테이블 생성 할 때, 컬럼명 옆에 아래와 같이 IDENTITY 라고 작성해 준다. [MEDIA_SEQ] [int] IDENTITY(1,1) NOT NULL, [CATEGORY] [nvarchar](50) NOT NULL, [FIMENAME] [nvarchar](50) NOT NULL, | 방법2. Microsoft SQL Server Management studio 출처 : https://clover7-webnote.tistory.com/124 [MSSQL] AUTOINCREMENT 설정하기 MYSQL에서는 KEY값에다가 AUTOINCREMEN..

MS-SQL 2022.12.06

datepart 함수 - 원하는 날짜 형태로 변환하는 함수

DATEPART 함수는 지정한 날짜에서 원하는 날짜 형태를 출력하는 함수 DATEPART 함수 사용하는 방법 DATEPART ( datepart , date ) DATEPART 함수 사용 예제 * 현재 년도 출력하기 SELECT DATEPART(yyyy,GETDATE()) * 현재 월 출력하기 SELECT DATEPART(mm,GETDATE()) * 현재 일 출력하기 SELECT DATEPART(dd,GETDATE()) * 그 외, datepart 인수 DATEPART 함수를 사용하여 출력할 수 있는 datepart 인수는 다음과 같다. datepart 인수 약어 year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww w..

MS-SQL 2022.12.06

[MSSQL]저장 프로시저 장단점, 사용 예제 정리

저장 프로시저 장단점 저장 프로시저의 장점 1) 프로시저만 수정이 필요할 경우 애플리케이션을 배포하지 않고 프로시저만 배포하면 됩니다. → 즉 어플리케이션 코드 내에 SQL 로직이 포함되었을 경우 애플리케이션도 재배포 해야하지만 프로시저 내에 포함될 경우 프로시저만 수정하여 배포하면 됩니다. 2) 자연스럽게 프로시저에 인자를 추가하여 바인드 변수를 사용하게 되므로 SQL 하드 파싱을 걱정할 일이 없습니다. → 어플리케이션 코드에 SQL 작성을 아래와 같이 하는 코드들이 종종 보입니다. [어플리케이션 레벨에서 작성된 Dynamic SQL 예] //strCOL1 : 입력마다 바뀌는 String 변수 String strSQL = "SELECT * FROM T1 WHERE COL1 = '" + strCOL1 +..

MS-SQL 2022.12.04

dateadd() 함수

SQL 에서 datetime 형식의 시간에 원하는 만큼을 추가하려면..? dateadd(Type, Add, Date) 을 사용하면 됩니다. 시간 추가 - Date 시간에 원하는 시간을 더해서 구해 줍니다. Type 에 입력될 항목 year , yy, y month, m, mm day, d, dd week, w, wk hour, hh minute, m second, s, ss millisecond, ms Add 에 입력될 항목 Type 에 따른 값. dateadd(year, 1 입력시 1년 추가. Date 추가할 기준 시간 2008-10-10 or 2008-10-10 20:00:00 의 datetime or smalldatetime 형식 샘플 select dateadd(hour, 1, sdate) as v..

MS-SQL 2022.12.02
728x90