sql-server - 추가 - 오라클 컬럼 not null 변경




열을 변경하는 경우:null에서 not null (8)

JDK에 포함 된 inbuilt javaDB (오라클이 지원하는 Apache Derby 배포판)의 경우 아래 내용이 나에게 유용했다.

alter table [table name] alter column [column name] not null;

nullable 가능 정수 열이 여러 개인 테이블이 있습니다. 이것은 몇 가지 이유로 바람직하지 않으므로 모든 null을 0으로 업데이트 한 다음이 열을 NOT NULL 로 설정하려고 NOT NULL . nulls를 0 으로 변경하는 것 외에도 데이터를 보존해야합니다.

칼럼 (칼럼 A)을 " not null "으로 변경하기위한 특정 SQL 구문 을 찾고있다. 데이터가 널 (NULL)을 포함하지 않도록 갱신되었다고 가정하십시오.

SQL Server 2000 사용 .


Oracle 11g의 경우 다음과 같이 열 속성을 변경할 수있었습니다.

ALTER TABLE tablename MODIFY columnname datatype NOT NULL;

그렇지 않으면 abatichev의 대답은 좋게 보였다. 변경을 반복 할 수 없다 - 적어도 SQL Developer에서는 열이 이미 널이 아님을 불평한다.


당신은 두 단계로 그것을해야 할 것입니다 :

  1. 컬럼에 널 (null)이 없도록 테이블을 갱신하십시오.
UPDATE MyTable SET MyNullableColumn = 0
WHERE MyNullableColumn IS NULL
  1. 열을 변경하려면 테이블을 변경하십시오.
ALTER TABLE MyTable
ALTER COLUMN MyNullableColumn MyNullableColumnDatatype NOT NULL

먼저 모든 현재 NULL 값을 사라지게합니다.

UPDATE [Table] SET [Column]=0 WHERE [Column] IS NULL

그런 다음 NULL을 허용하지 않도록 테이블 정의를 업데이트하십시오.

ALTER TABLE [Table] ALTER COLUMN [Column] INTEGER NOT NULL

열이 고유 한 식별자가 아닌 한

UPDATE table set columnName = 0 where columnName is null

그때

테이블을 변경하고 필드를 null이 아닌 값으로 설정하고 기본값 0을 지정하십시오.


이것은 나를 위해 일했다 :

ALTER TABLE [Table] 
Alter COLUMN [Column] VARCHAR(50) not null;

제 경우에는 게시 된 답변에 어려움이있었습니다. 나는 다음과 같이 사용했다.

ALTER TABLE table_name CHANGE COLUMN column_name column_name VARCHAR(200) NOT NULL DEFAULT '';

VARCHAR(200) 을 데이터 유형으로 변경하고 선택적으로 기본값을 변경하십시오.

기본값이 없으면이 변경을 수행하는 데 문제가 있습니다. 기본값은 null이므로 충돌이 발생합니다.


FOREIGN KEY CONSTRAINT ... 기본 키 테이블의 열에 '0'이 없으면 문제가 발생합니다. 그 해결책은 ...

1 단계:

이 코드를 사용하여 모든 제약 조건을 해제하십시오.

EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

2 단계:

RUN UPDATE COMMAND (as mentioned in above comments)
RUN ALTER COMMAND (as mentioned in above comments)

STEP3 :

이 코드를 사용하여 모든 제약 조건을 활성화합니다.

exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"




alter-column