반응형
열 nvarchar 길이를 드롭 없이 변경하는 방법
테이블 "Post"의 "Body" 열 길이를 다음과 같이 변경하려고 합니다.
ALTER TABLE Post ALTER COLUMN Body nvarchar(8000) NOT NULL;
이 열은 nvarchar(4000)로 정의되며 다음 오류가 발생합니다.
Msg 2717, Level 16, State 2, Line 1 'Body' 매개 변수에 지정된 크기(8000)가 허용된 최대값(4000)을 초과합니다.
대신 Max를 사용합니다.열이 VARCHAR로 선언된 경우 8000이면 됩니다.
ALTER TABLE Post ALTER COLUMN Body nvarchar(max) NOT NULL;
열에 기본값과 같은 제약 조건 키가 있는 경우 ...을 선택합니다.ext, 먼저 열의 크기를 변경하고 열에 대한 제약 조건을 변경하기 위해 열에서 키 제약 조건을 삭제했습니다.다음 단계를 수행하면 도움이 됩니다.
단계는.
> ALTER TABLE MESSAGE_INBOX_VIEWERS DROP CONSTRAINT DF_CONST_TEXT
> ALTER TABLE MESSAGE_INBOX_VIEWERS ALTER COLUMN TEXT NVARCHAR(MAX)
> ALTER TABLE MESSAGE_INBOX_VIEWERS ADD CONSTRAINT DF_CONST_TEXT DEFAULT('') FOR TEXT
제약 조건에 대해 다음을 사용할 수 있습니다.
DECLARE @DEFCONSTRAINT VARCHAR(1000);
DECLARE @DropDFConstraitCmd VARCHAR(1000);
DECLARE @AlterDFColumnCmd VARCHAR(1000);
DECLARE @CreateDFConstraitCmd VARCHAR(1000);
DECLARE @CONSTRAINT_SAYI NUMERIC;
SET @DEFCONSTRAINT=(SELECT name
FROM sys.sysobjects
WHERE type = 'D' AND OBJECT_NAME(parent_obj) = 'TABLENAME' and name like 'DF__TABLENAME__COLUMNNAME%');
SET @CONSTRAINT_SAYI=(SELECT count(*)
FROM sys.sysobjects
WHERE type = 'D' AND OBJECT_NAME(parent_obj) = 'TABLENAME' and name like 'DF__TABLENAME__COLUMNNAME%');
SET @DropDFConstraitCmd = ' ALTER TABLE TABLENAME DROP CONSTRAINT ' +@DEFCONSTRAINT;
SET @AlterDFColumnCmd = ' ALTER TABLE TABLENAME ALTER COLUMN COLUMNNAME nvarchar(max) NOT NULL';
SET @CreateDFConstraitCmd = ' ALTER TABLE TABLENAME ADD CONSTRAINT ' +@DEFCONSTRAINT + ' DEFAULT ('' '') FOR COLUMNNAME ';
if @CONSTRAINT_SAYI > 0
exec (@DropDFConstraitCmd);
exec (@AlterDFColumnCmd);
exec (@CreateDFConstraitCmd);
대신 NTEXT를 사용하십시오.
ALTER TABLE Post ALTER COLUMN Body NTEXT NOT NULL;
NTEXT는 NVARCHAR와 비슷하지만 많은 양의 텍스트가 필요한 BODY 필드 또는 주석 필드에 맞게 설계되었습니다.
언급URL : https://stackoverflow.com/questions/45845430/how-to-alter-column-nvarchar-length-without-drop
반응형
'your programing' 카테고리의 다른 글
Python의 파일에서 문자 읽기 (0) | 2023.08.30 |
---|---|
pkg-config 검색 경로에서 패키지 카이로를 찾을 수 없습니다.노드 j.s 설치 캔버스 문제 (0) | 2023.08.10 |
배치 삽입 및 LAST_INSERT_슬리크와 마리아의 아이디DB (0) | 2023.08.10 |
클래스 메서드는 "TypeError: ...키워드 인수에 대한 여러 값을 받았습니다..."를 생성합니다. (0) | 2023.08.10 |
'XXX' 유형을 로드할 수 없습니다.전역' (0) | 2023.06.11 |