[MSSQL] SET DEFAULT

문장 기본 나뉘다?

기본 삭제 설정: 부모 데이터 삭제 시 아동 데이터 나뉘다기본값입니다(기본) ~에서 업데이트하려면.

기본 업데이트 설정: 부모 데이터 업데이트 시 하위 데이터 나뉘다기본값입니다(기본) ~에서 업데이트하려면.

관련된 테이블 테이블 생성

일하다 필요한 테이블 그리고 데이터 입력.

-- dbo.Vacation 테이블 삭제

IF OBJECT_ID('dbo.Vacation', 'U') IS NOT NULL

DROP TABLE dbo.Vacation

GO



-- dbo.Employee 테이블 삭제

IF OBJECT_ID('dbo.Employee', 'U') IS NOT NULL

DROP TABLE dbo.Employee

GO



-- dbo.Employee 테이블 만들기

CREATE TABLE dbo.Employee (

EmpID char(5) PRIMARY KEY,

EmpName nvarchar(10) NOT NULL,

EngName varchar(20) NULL,

)

GO



-- 데이터 추가

INSERT INTO dbo.Employee(EmpID, EmpName, EngName) VALUES('S0001', N'홍길동', 'Gildong')

INSERT INTO dbo.Employee(EmpID, EmpName) VALUES('S0002',N'일지매')

INSERT INTO dbo.Employee(EmpID, EmpName, EngName) VALUES('S0003',N'강우동', 'NULL') 

GO



-- dbo.Employee 테이블 만들기

CREATE TABLE dbo.Vacation (

VacationID int IDENTITY PRIMARY KEY,

EmpID char(5) NOT NULL,

BeginDate date NOT NULL,

EndDate date NOT NULL,

Reason nvarchar(50) DEFAULT N'개인사유',

Duration AS (DATEDIFF(day, BeginDate, EndDate) + 1),

CHECK (EndDate >= BeginDate)

)

GO



-- 데이터 추가

INSERT INTO dbo.Vacation VALUES('S0001','2011-01-12','2011-01-12',N'감기몸살')

INSERT INTO dbo.Vacation VALUES('S0001','2011-03-21','2011-03-21',N'글쎄요')

INSERT INTO dbo.Vacation VALUES('S0002','2012-02-10','2012-02-13',N'두통')

INSERT INTO dbo.Vacation VALUES('S0003','2012-09-17','2012-09-17',N'휴식이 필요')

GO

하나. 기본값으로 설정 가능성 태도

부모 테이블 인 직원 책상 위에 EMPID가다 S0000사람 데이터 에 추가.

-- dbo.Employee에 데이터 추가

INSERT INTO dbo.Employee(EmpID, EmpName, EngName) VALUES('S0000',N'NULL', 'NULL') 

GO


-- EmpID 열에 기본 값 설정

ALTER TABLE dbo.Vacation

ADD CONSTRAINT DF_Vacation_EmpID

DEFAULT 'S0000' FOR EmpID

GO



--데이터 추가시 default 값인 S0000가 입력된다.

INSERT INTO dbo.Vacation VALUES(default,'2012-09-17','2012-09-17',N'휴식이 필요')


-- 기존 FOREIGN KEY 제약 삭제

ALTER TABLE dbo.Vacation

DROP CONSTRAINT FK_Vacation_EmpID

GO



-- FOREIGN KEY 제약 추가(SET DEFAULT)

ALTER TABLE dbo.Vacation

ADD CONSTRAINT FK_Vacation_EmpID

FOREIGN KEY (EmpID) REFERENCES dbo.Employee(EmpID)

ON DELETE SET DEFAULT   

    ON UPDATE SET DEFAULT 

GO



-- 직원 정보 삭제

DELETE dbo.Employee

WHERE EmpID = 'S0010'

GO



-- 확인

SELECT * FROM dbo.Vacation

GO


직원 정보 업데이트

직원 정보(부모) S0003 -> S0009업데이트. 어린 이용 테이블 휴가~에서 엠피드 S0003상위 값입니다. S0003사라졌기 때문에 기본 설정 값 ‘S0000’변경됩니다.

update Employee set EmpID='S0009'

WHERE EmpID = 'S0003'



-- 확인

SELECT * FROM dbo.Employee

SELECT * FROM dbo.Vacation

GO