티스토리 뷰
매번 실서버에 디비의 변경된 스키마가 적용됐는지 확인하려면 컬럼을 존재하는지 일일히 select날려 체크하고 있으면 냅두고 없으면 alter해주곤했었다.
근데 if not exists를 이용하면 더 간단히 할 수 있다는걸 알았다.
[이전에 내가 사용했던 방식]
[if not exists 사용]
프로시저나 펑션의 경우도 같은 방법으로 사용가능하며,
컬럼의 내용을 업데이트하거나 인서트할때는 아래 와 같이 사용하면된다.
[참조 : http://blog.naver.com/pythonist?Redirect=Log&logNo=20086222891]
근데 if not exists를 이용하면 더 간단히 할 수 있다는걸 알았다.
[이전에 내가 사용했던 방식]
SELECT TOP 1 GPS_ACCURACY FROM TB_TRACKER; ALTER TABLE TB_TRACKER ADD GPS_ACCURACY INT NOT NULL CONSTRAINT DF_TB_TRACKER_GPS_ACCURACY DEFAULT (0);
[if not exists 사용]
-- 1. 컬럼 IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='TB_TRACKER' AND COLUMN_NAME='GPS_ACCURACY') ALTER TABLE TB_TRACKER ADD GPS_ACCURACY INT NOT NULL CONSTRAINT DF_TB_TRACKER_GPS_ACCURACY DEFAULT (0) GO -- 2. 테이블 IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='TB_FAV_ADDRESS') CREATE TABLE TB_FAV_ADDRESS ( ADDRESS_ID DECIMAL(18, 0) IDENTITY(1,1) NOT NULL PRIMARY KEY, ADDRESS_NM VARCHAR(255) NOT NULL, ADDRESS VARCHAR(255) NULL, LAT_NO REAL, LON_NO REAL, DESCRIPTION VARCHAR(255), OPT_DISPLAY_MS BIT NOT NULL DEFAULT(0), USER_ID DECIMAL(18, 0) NOT NULL ) GO -- 3. 컬럼 추가 후 업데이트 할 경우, IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='TB_TRACKER' AND COLUMN_NAME='MDATE_DT') BEGIN DECLARE @SQL VARCHAR(2000); SET @SQL = 'ALTER TABLE TB_TRACKER ADD MDATE_DT DATETIME NOT NULL DEFAULT GETDATE()'; EXEC(@SQL); SET @SQL = 'UPDATE TB_TRACKER SET MDATE_DT = CDATE_DT'; EXEC(@SQL); END GO -- 3-1. 컬럼 추가후 업데이트 여러쿼리 할경우, IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='TB_CODE' AND COLUMN_NAME='CODE_IMG') BEGIN DECLARE @SQL VARCHAR(2000); SET @SQL = 'ALTER TABLE TB_CODE ADD CODE_IMG VARCHAR(255) DEFAULT ('''');'; EXEC(@SQL); SET @SQL = 'UPDATE TB_CODE SET CODE_IMG = '''';'; EXEC(@SQL); SET @SQL = 'UPDATE TB_CODE SET CODE_IMG=''event/journeystart.gif'' WHERE CODE_GRP_ID = ''C005'' AND CODE_ID=''11''; UPDATE TB_CODE SET CODE_IMG=''event/geofencein.gif'' WHERE CODE_GRP_ID = ''C005'' AND (CODE_ID>=''40'' AND CODE_ID<=''49''); UPDATE TB_CODE SET CODE_IMG=''event/evt_redlighton.gif'' WHERE CODE_GRP_ID = ''C005'' AND CODE_ID=''85''; -- for tracker UPDATE TB_CODE SET CODE_IMG=''tracker/''+CODE_ID+''_eB_h00.png'' WHERE CODE_GRP_ID = ''C051'';' EXEC(@SQL); END GO
프로시저나 펑션의 경우도 같은 방법으로 사용가능하며,
컬럼의 내용을 업데이트하거나 인서트할때는 아래 와 같이 사용하면된다.
UPDATE TB_CODE_GRP SET CODE_GRP_GE='Device Sub Type' WHERE CODE_GRP_ID='C043' IF @@ROWCOUNT=0 INSERT INTO TB_CODE_GRP (CODE_GRP_ID, CODE_GRP_GE) VALUES ('C043', 'Device Sub Type'); GO
[참조 : http://blog.naver.com/pythonist?Redirect=Log&logNo=20086222891]
반응형
'Computer > Databases' 카테고리의 다른 글
[MSSQL] 컬럼명 변경하기 (sp_rename) (0) | 2010.07.22 |
---|---|
[MSSQL] Constraint 걸린 컬럼지우기 (0) | 2010.02.10 |
[MySQL] Create Table With All Data Types In MySQL (0) | 2009.12.31 |
[MSSQL] INDEX Create 와 Drop (2) | 2009.12.18 |
[MSSQL] Constraint 때문에 Alter / Drop 실행이 안될때.. (0) | 2009.11.20 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- MySQL
- javascript
- 와코마리아
- 리터너블
- 해외직구
- 기부사기
- 단체소송
- java
- 라고스
- UML
- 팸세일
- 마라탕 #마라상궈 #마라탕재료 #쉽게만드는마라탕 #중딩입맛 #마라탕잡탕
- 와코마리아팸세일
- 새희망씨앗 피해자
- 와코마리아한남동
- 기부피해
- VirtureBox
- 나이지리아
- 부드러운맛
- 인도
- 패밀리세일
- 와코마리아 스웨터
- 페밀리세일
- eclipse
- 6월 패밀리세일
- 한남동세일
- 안드로이드
- 새희망씨앗
- 홈택스
- 사업자등록
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함