여러 개의 nullable 정수 열이 있는 테이블이 있습니다. 이것은 여러 가지 이유로 바람직하지 않으므로 모든 null을 0으로 업데이트한 다음 이러한 열을 NOT NULL
로 설정하려고 합니다. 0
으로 변경하는 것 외에도 데이터를 보존해야 합니다.
열을 " not null
"로 변경하는 특정 SQL 구문 을 찾고 ColumnA
데이터가 null을 포함하지 않도록 업데이트되었다고 가정합니다.
SQL 서버 2000 사용 .
질문자 :Karmic Coder
여러 개의 nullable 정수 열이 있는 테이블이 있습니다. 이것은 여러 가지 이유로 바람직하지 않으므로 모든 null을 0으로 업데이트한 다음 이러한 열을 NOT NULL
로 설정하려고 합니다. 0
으로 변경하는 것 외에도 데이터를 보존해야 합니다.
열을 " not null
"로 변경하는 특정 SQL 구문 을 찾고 ColumnA
데이터가 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
Oracle 11g의 경우 다음과 같이 열 속성을 변경할 수 있었습니다.
ALTER TABLE tablename MODIFY columnname datatype NOT NULL;
그렇지 않으면 batichev의 대답이 좋아 보였습니다. 변경을 반복할 수 없습니다. 열이 이미 null이 아니라고 불평합니다(적어도 SQL Developer에서는).
이것은 나를 위해 일했습니다.
ALTER TABLE [Table] Alter COLUMN [Column] VARCHAR(50) not null;
열이 고유 식별자가 아닌 한
UPDATE table set columnName = 0 where columnName is null
그 다음에
테이블을 변경하고 필드를 null이 아닌 것으로 설정하고 기본값을 0으로 지정하십시오.
FOREIGN KEY CONSTRAINT
...의 경우 Primary key 테이블의 컬럼에 '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)
3단계:
다음 코드를 사용하여 모든 제약 조건을 활성화합니다.
exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
이것은 더 간단해 보이지만 Oracle에서만 작동합니다.
ALTER TABLE [Table] ALTER [Column] NUMBER DEFAULT 0 NOT NULL;
또한 이를 통해 열을 변경할 뿐만 아니라 추가할 수도 있습니다. 값이 null인 경우 이 예에서 기본값(0)으로 업데이트됩니다.
제 경우에는 게시된 답변에 어려움이 있었습니다. 나는 다음을 사용하여 끝났습니다.
ALTER TABLE table_name CHANGE COLUMN column_name column_name VARCHAR(200) NOT NULL DEFAULT '';
VARCHAR(200)
을 데이터 유형으로 변경하고 선택적으로 기본값을 변경하십시오.
기본값이 없으면 이 변경을 수행하는 데 문제가 발생합니다. 기본값은 null이 되어 충돌을 일으키기 때문입니다.
열을 null이 아닌 것으로 만들고 기본값을 추가하는 것도 SSMS GUI에서 수행할 수 있습니다.
UPDATE myTable SET myColumn = 0
예를 들어 보겠습니다.
TABLE NAME=EMPLOYEE
EMPLOYEE_NAME
열을 NOT NULL
로 변경하고 싶습니다. 이 쿼리는 작업에 사용할 수 있습니다.
ALTER TABLE EMPLOYEE MODIFY EMPLOYEE.EMPLOYEE_NAME datatype NOT NULL;
JDK(Oracle에서 지원하는 Apache Derby 배포판)에 포함된 내장 javaDB의 경우 아래가 저에게 효과적이었습니다.
alter table [table name] alter column [column name] not null;
다음 sql을 사용하여 기존 DB 컬럼의 정의를 변경할 수 있습니다.
ALTER TABLE mytable modify mycolumn datatype NOT NULL;
먼저 변경할 열에 null 값이 없는지 확인하십시오. column's_name이 null인 테이블에서 count(*)를 선택하십시오.
누락된 값을 대치합니다. null을 빈 문자열이나 0, 평균 또는 중앙값 또는 보간된 값으로 바꿀 수 있습니다. 백필 전략 또는 포워드 필 전략에 따라 다릅니다.
열 값이 고유해야 하는지 아니면 고유하지 않아야 하는지 결정하십시오. 고유한 제약 조건을 추가하는 것보다 고유해야 하는 경우. 그렇지 않으면 성능이 적절한지 또는 색인을 추가해야 하는지 확인하십시오.
출처 : http:www.stackoverflow.com/questions/689746/altering-a-column-null-to-not-null
JavaScript는 변수로 객체 키를 설정합니다. (0) | 2023.04.20 |
---|---|
PHP를 사용하는 "공지: 정의되지 않은 변수", "주의: 정의되지 않은 인덱스" 및 "주의: 정의되지 않은 오프셋" (0) | 2023.04.20 |
\d [0-9]보다 덜 효율적입니다. (0) | 2023.04.20 |
생성자와 ngOnInit의 차이점 (0) | 2023.04.20 |
필드와 속성의 차이점은 무엇입니까? (0) | 2023.04.20 |