2012-01-12 3 views
110

내용을 잃지 않고 varchar 열 길이를 255 자에서 500 자로 업데이트하려고합니다. 이전에 테이블을 삭제하고 다시 만들었지 만,이 작업을 수행하는 데 사용해야한다고 생각하는 alter 문에는 노출되지 않았습니다. 나는 문서를 여기에서 찾았다 : ALTER TABLE (Transfact-SQL) 그러나 나는 그것의 머리 또는 꼬리를 만들 수 없다.varchar 열의 최대 길이 변경?

I 다음 지금까지 (불행히도 기본적으로 아무것도) 없다 :이 접근 어떻게

alter table [progennet_dev].PROGEN.LE 
alter column UR_VALUE_3 

를? 이 문에 대한 더 나은 문서가 있습니까 (예제 문을 검색했지만 비어 있습니다).

답변

212

당신은

ALTER TABLE YourTable ALTER COLUMN YourColumn <<new_datatype>> [NULL | NOT NULL] 

이 필요하지만 원하는 경우 명시 적으로 NOT NULL를 지정해야합니다.

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500); 

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NOT NULL; 

당신이 지정 아래와 같이두면

는 ... 그런 다음 열은 원래 NOT NULL로 정의 된 경우에도 널 (null)을 허용하는 기본 설정됩니다. 즉, ALTER TABLE ... ALTER COLUMN의 명세를 생략하면 항상 처리됩니다.

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NULL; 

이 문제는 ALTER TABLE (또는 CREATE TABLE 시간)로 만든 새 열 사용 다릅니다. 기본 Null 허용 여부는 ANSI_NULL_DFLT 설정에 따라 다릅니다.

+0

것은 당신이 추가의 목적을 설명 할 수 여기에 '[NOT] NULL'를 지정하는 것을 잊지 ? 너의 대답에 왜 미치가 없다고 골똘하게 생각하니? – Codingo

+0

@MitchWheat - ""ANSI COLUMN에 대한 ANSI_NULL 기본값은 항상 설정되어 있으며 지정되지 않으면 열은 null입니다. "] (http://msdn.microsoft.com/en-us/library/ms190273.aspx) –

+0

그래서 [ NOT NULL]은 컬럼에 NULL 값을 넣을 수 없음을 지정합니다. – Codingo

16

데이터가 손실되지 않습니다 ALTER과 열 크기를 증가 :

alter table [progennet_dev].PROGEN.LE 
    alter column UR_VALUE_3 varchar(500) 

@Martin가 지적 하듯이, 명시 적으로 NULL | NOT NULL