SQL Server 2014: 실습3 뷰, 저장 프로시저, 트리거 맛보기

뇌를 자극하는 SQL Server 2012 기본편 110페이지

——–뷰(View)———–

뷰는 가상의 테이블.

clip_image001

CREATE VIEW uv_memberTBL
AS
SELECT memberName, memberAddress FROM memberTBL;

뷰(uv_memberTBL)에 접근하면 SELECT 문이 작동하게 됨.

clip_image002

USE ShopDB;
SELECT * FROM uv_memberTBL;

이렇게 사용함. 뷰를 생성할 때 입력한 SELECT문이 작동.

———저장 프로시저(Stored Procedure)———

저장 프로시저는 SQL Server에서 제공하는 프로그래밍 기능. SQL 문을 하나로 묶어서 편리하게…(+프로그래밍 언어 측면도 제공)

clip_image003

USE ShopDB;
SELECT * FROM memberTBL WHERE memberName=’당탕이’;
SELECT * FROM productTBL WHERE productName=’냉장고’;

이렇게 매번 입력하는 게 번거롭다면…

clip_image004

CREATE PROCEDURE myProc
AS
SELECT * FROM memberTBL WHERE memberName=’당탕이’;
SELECT * FROM productTBL WHERE productName=’냉장고’;
GO

저장 프로시저 생성.

clip_image005

저장 프로시저 실행 시.

——–트리거(Trigger) 개요——

트리거는 테이블에 INSERT, UPDATE, DELETE 작업이 발생하면 실행되는 코드.

‘만약 어떤 테이블에 삭제 작업이 일어날 때 미리 해당 데이터를 다른 곳에 자동으로 저장하는 기능이 있다면?’

clip_image006

——–실험을 해보자————

INSERT INTO memberTBL VALUES (‘Figure’, ‘연아’, ‘경기도 군포시 당정동’);

memberTBL에 새 회원을 입력.

clip_image007

연아가 추가됨.

clip_image008

UPDATE memberTBL SET memberAddress=’서울 강남구 역삼동’
WHERE memberName=’연아’;

연아의 주소를 수정.

clip_image009

업데이트 됨.

clip_image010

DELETE memberTBL WHERE memberName=’연아’;

연아 회원 삭제

(이렇게 하면 연아의 회원 정보를 살릴 방법이 없다)

———실험을 해보자2———–

clip_image011

CREATE TABLE deletedMemberTBL
(memberID char(8),
memberName nchar(5),
membertAddress nchar(20),
deleteDate date –삭제한 날짜
);

먼저 지워진 데이터를 보관할 테이블을 만듦

clip_image012

CREATE TRIGGER trg_deletedMemberTBL –트리거 이름
ON memberTBL — 트리거를 부착할 테이블
AFTER DELETE — 삭제 후 작동하게 지정
AS
–deleted 테이블의 내용을 백업 테이블에 삽입
INSERT INTO deletedMemberTBL
SELECT memberID, memberName, memberAddress, GETDATE()
FROM deleted;
GO

memberTBL에 삭제 작업이 일어나면 해당 행이 deletedMemberTBL에 저장됨

clip_image013

현재 memberTBL 내용.

clip_image014

당탕이를 제거함.

clip_image015

memberTBL과 deletedMemberTBL의 내용. 신기하구만. ㅎㅎ

이것도 살펴보세요!

Vue3: 프로젝트 폴더/파일 구성, ESLint

새로 만든 Vue 프로젝트의 폴더/파일 구성 폴더/파일내용.vscodeVisual Studio용 설정 파일dist배포용 파일 세트를 저장node_modules라이브러리를 저장public웹으로 공개할 …

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다