티스토리 뷰
그래서 어차피 이제 막 추가했던 컬럼이니 드랍이나 하자 했는데..
이역시 쉽게 되질 않아 방법을 찾아보게 되었다.
[출처 : http://www.cyworld.com/candyshop52/2855015]
출처의 필자에 의하면 constraint만 삭제했다가, alter나 drop후에 다시 생성해주라는건데..
constraint를 삭제해도 alter가 잘 이루어지지 않았다..
결국 그냥 constraint와 컬럼 모두 드랍하는것으로 결정!
ALTER TABLE TB_GEOFENCE_ALERT DROP CONSTRAINT DF_TB_GEOFENCE_ALERT_LAST_IN_OUT_STATUS;
ALTER TABLE TB_GEOFENCE_ALERT DROP COLUMN LAST_IN_OUT_STATUS;
ALTER TABLE TB_GEOFENCE_ALERT ADD LAST_IN_OUT_STATUS CHAR(1) NOT NULL CONSTRAINT DF_TB_GEOFENCE_ALERT_LAST_IN_OUT_STATUS DEFAULT ('X');
평소에 CONSTRAINT를 명시하고 컬럼을 생성하는 버릇때문에 그냥 저 상태로 돌리기만 하면 드랍후에 깔끔히 신규 컬럼이 생성되지만, constraint를 명시하지 않고 컬럼을 생성한 경우는 출처의 필자 방식을 따르면 된다.
============================참고=====================================
exec sp_helpconstraint [테이블명]
-- 실행을 하면 먼저 해당 테이블에 설정되어있는 Constraints 가 조회된다
DECLARE @sysname sysname
DECLARE @sql varchar(1000)
IF EXISTS (SELECT name FROM sysobjects
WHERE type ='D' AND name like '%[테이블명]__[필드명]%') -- '%mok__c%'
BEGIN
SET @sysname = (SELECT name FROM sysobjects
WHERE type ='D' AND name like '%[테이블명]__[필드명]%' and xtype = [제약조건타입])
--name = 'DF__test_mok__c__6C21DDE7'
set @sql = 'ALTER TABLE [테이블명] DROP CONSTRAINT ' + @sysname
exec (@sql)
END
GO
-- 제약조건이 삭제 되었으면 기존에 제약조건이 걸려있는 필드들에 대한 변경작업이 가능!!
-- 제약 조건 삭제 후 다시 alter table 을 이용하여 제약조건을 만들면 된다
-- 참고로 위의 예제는 Constraint를 명시적으로 NAME을 주지 않고 생성했을 경우에 해당하는 경우이다. 명시적으로 하였을 경우에는 like절을 쓰지 않고 올바른 NAME을 주어야 한다
=====================================================================
Default 변경만을 원할때는 Constraint를 drop하고, 새로 constraint를 add하는 개념으로 해야된다.
(이걸 모르고 아무생각없이 alter column만 하려고 했으니;;; 수정이 안됐었다능;;)
ALTER TABLE TB_USER DROP CONSTRAINT DF_TB_USER_USE_DISPLAY_MAIN;
ALTER TABLE TB_USER ADD CONSTRAINT DF_TB_USER_USE_DISPLAY_MAIN DEFAULT '1' FOR USE_DISPLAY_MAIN;
잘못 생각했던 수정쿼리의 예 : ALTER TABLE TB_USER ALTER COLUMN USE_DISPLAY_MAIN INT NOT NULL CONSTRAINT DF_TB_USER_USE_DISPLAY_MAIN DEFAULT '1';
[출처] http://blog.naver.com/astris7?Redirect=Log&logNo=70082614156
[참고]
SYSOBJECT 활용 쿼리문 모음
USE [DATABASE]
SELECT 'DELETE FROM ' + [NAME] FROM SYS.SYSOBJECTS WHERE [xtype] = 'U'
xtype 는 Char(2) 데이터형식 이며 개체 유형을 나타낸다.
xtype = 'C' -- CHECK 제약조건
xtype = 'D' -- 기본값 또는 DEFAULT 제약조건
xtype = 'F' -- FOREIGN KEY 제약조건
xtype = 'L' -- 로그
xtype = 'FN' -- 스칼라 함수
xtype = 'IF' -- 인라인 테이블 함수
xtype = 'P' -- 저장 프로시저
xtype = 'PK' -- PRIMARY KEY 제약조건 (K 유형)
xtype = 'RF' -- 복제 필터 저장 프로시저
xtype = 'S' -- 시스템 테이블
xtype = 'TF' -- 테이블 함수
xtype = 'TR' -- 트리거
xtype = 'U' -- 사용자 테이블
xtype = 'UQ' -- UNIQUE 제약조건 (K 유형)
xtype = 'V' -- 뷰
xtype = 'X' -- 확장 저장 프로시저
'Computer > Databases' 카테고리의 다른 글
[MySQL] Create Table With All Data Types In MySQL (0) | 2009.12.31 |
---|---|
[MSSQL] INDEX Create 와 Drop (2) | 2009.12.18 |
[MSSQL] DATEDIFF (0) | 2009.11.12 |
[MSSQL2005] Data Type Conversion Error (0) | 2009.10.13 |
[MSSQL2005] YYYYMMDDHHMISS형태의 날짜 String 을 Datetime으로 (0) | 2009.10.08 |
- Total
- Today
- Yesterday
- 인도
- 안드로이드
- 사업자등록
- 와코마리아 스웨터
- 새희망씨앗
- javascript
- MySQL
- 와코마리아팸세일
- 부드러운맛
- 패밀리세일
- 팸세일
- 기부피해
- 6월 패밀리세일
- 나이지리아
- java
- 와코마리아
- 와코마리아한남동
- 단체소송
- 한남동세일
- VirtureBox
- eclipse
- 해외직구
- 리터너블
- 새희망씨앗 피해자
- 홈택스
- 마라탕 #마라상궈 #마라탕재료 #쉽게만드는마라탕 #중딩입맛 #마라탕잡탕
- 라고스
- UML
- 페밀리세일
- 기부사기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |