nullable 가능 정수 열이 여러 개인 테이블이 있습니다. 이것은 여러 가지 이유로 바람직하지 않습니다. 그래서 모든 null을 0으로 업데이트 한 다음이 열을로 설정하려고합니다.NOT NULL
. null을 변경하는 것 외에도0
데이터는 보존되어야합니다.
나는특정 SQL 구문열을 변경하려면ColumnA
)를 "not null
"데이터가 null을 포함하지 않도록 업데이트되었다고 가정합니다.
사용SQL 서버 2000.
먼저 모든 현재 NULL 값을 사라지게합니다.
UPDATE [Table] SET [Column]=0 WHERE [Column] IS NULL
그런 다음 NULL을 허용하지 않도록 테이블 정의를 업데이트하십시오.
ALTER TABLE [Table] ALTER COLUMN [Column] INTEGER NOT NULL
나도 같은 문제가 있었지만, null로 기본값을 사용하는 필드는 이제 0으로 기본값을 지정하고 싶습니다. mdb의 해결책을 한 번 더 추가해야했습니다.
ALTER TABLE [Table] ADD CONSTRAINT [Constraint] DEFAULT 0 FOR [Column];
당신은 두 단계로 그것을해야 할 것입니다 :
UPDATE MyTable SET MyNullableColumn = 0
WHERE MyNullableColumn IS NULL
ALTER TABLE MyTable
ALTER COLUMN MyNullableColumn MyNullableColumnDatatype NOT NULL
이것은 나를 위해 일했다 :
ALTER TABLE [Table]
Alter COLUMN [Column] VARCHAR(50) not null;
열이 고유 한 식별자가 아닌 한
UPDATE table set columnName = 0 where columnName is null
그때
테이블을 변경하고 필드를 null이 아닌 값으로 설정하고 기본값 0을 지정하십시오.
이것은 더 단순 해 보이지만 Oracle에서만 작동합니다.
ALTER TABLE [Table]
ALTER [Column] NUMBER DEFAULT 0 NOT NULL;
또한이를 사용하여 열을 추가 할 수 있습니다. 값이 널인 경우,이 예에서 기본값 (0)으로 갱신됩니다.
제 경우에는 게시 된 답변에 어려움이있었습니다. 나는 다음과 같이 사용했다.
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"
JDK에 포함 된 inbuilt javaDB (오라클이 지원하는 Apache Derby 배포판)의 경우 아래 내용이 나에게 유용했다.
alter table [table name] alter column [column name] not null;
다음 SQL을 사용하여 기존 DB 열의 정의를 변경할 수 있습니다.
ALTER TABLE mytable modify mycolumn datatype NOT NULL;
NOT NULL
많은 로깅을 유발할 수 있습니다. - Martin Smith