programing

테이블을 변경하여 열의 기본값을 수정합니다.

lastmoon 2023. 3. 23. 23:05
반응형

테이블을 변경하여 열의 기본값을 수정합니다.

데이터베이스 테이블에서 열의 기본값을 수정해야 하는 요구사항이 있습니다.테이블은 이미 데이터베이스에 존재하는 테이블이며 현재 열의 기본값은 NULL입니다.이 열에 새 기본값을 추가하면 열의 기존 NULL이 모두 새 DEfault 값으로 업데이트됩니다.이렇게 하지 않고 열에 새 기본값을 설정할 수 있는 방법이 있습니까?즉, 기존 NULL을 업데이트하지 않고 NULL로 유지하기를 원합니다.

이에 대한 어떤 도움도 감사합니다.감사해요.

무슨 일이 일어날지에 대한 당신의 믿음은 옳지 않다.열의 기본값을 설정해도 테이블의 기존 데이터에는 영향을 주지 않습니다.

컬럼이 있는 테이블을 만듭니다.col2디폴트값이 없습니다.

SQL> create table foo(
  2    col1 number primary key,
  3    col2 varchar2(10)
  4  );

Table created.

SQL> insert into foo( col1 ) values (1);

1 row created.

SQL> insert into foo( col1 ) values (2);

1 row created.

SQL> insert into foo( col1 ) values (3);

1 row created.

SQL> select * from foo;

      COL1 COL2
---------- ----------
         1
         2
         3

그런 다음 테이블을 변경하여 기본값을 설정해도 기존 행은 변경되지 않습니다.

SQL> alter table foo
  2    modify( col2 varchar2(10) default 'foo' );

Table altered.

SQL> select * from foo;

      COL1 COL2
---------- ----------
         1
         2
         3

SQL> insert into foo( col1 ) values (4);

1 row created.

SQL> select * from foo;

      COL1 COL2
---------- ----------
         1
         2
         3
         4 foo

나중에 기본값을 다시 변경해도 기존 행은 변경되지 않습니다.

SQL> alter table foo
  2    modify( col2 varchar2(10) default 'bar' );

Table altered.

SQL> select * from foo;

      COL1 COL2
---------- ----------
         1
         2
         3
         4 foo

SQL> insert into foo( col1 ) values (5);

1 row created.

SQL> select * from foo;

      COL1 COL2
---------- ----------
         1
         2
         3
         4 foo
         5 bar
ALTER TABLE *table_name*
MODIFY *column_name* DEFAULT *value*;

Oracle에서 근무했습니다.

예:

ALTER TABLE MY_TABLE
MODIFY MY_COLUMN DEFAULT 1;
ALTER TABLE {TABLE NAME}
ALTER COLUMN {COLUMN NAME} SET DEFAULT '{DEFAULT VALUES}'

예:

ALTER TABLE RESULT
ALTER COLUMN STATUS SET DEFAULT 'FAIL'

Justin의 예에 따라 다음 명령어는 Postgres에서 작동합니다.

alter table foo alter column col2 set default 'bar';

ALTER TABLE <table_name> MODIFY <column_name> DEFAULT <defult_value>

EX: ALTER TABLE AAA MODIFY ID DEFAULT AAA_SEQUENCE.nextval

Oracle Database 12c Enterprise Edition 릴리스 12.2.0.1.0에서 테스트 완료

SQL Azure의 경우 다음 조회가 작동합니다.

ALTER TABLE [TableName] ADD  DEFAULT 'DefaultValue' FOR ColumnName
GO

언급URL : https://stackoverflow.com/questions/21057275/alter-table-to-modify-default-value-of-column

반응형