복붙노트

[SQL] 어떻게 열을 변경하고 기본값을 변경하려면?

SQL

어떻게 열을 변경하고 기본값을 변경하려면?

나는 열의 데이터 형식을 변경하려고하고 새 기본 값을 설정하는 동안 다음 오류가 발생했습니다 :

ALTER TABLE foobar_data ALTER COLUMN col VARCHAR(255) NOT NULL SET DEFAULT '{}';

해결법

  1. ==============================

    1.

    ALTER TABLE foobar_data MODIFY COLUMN col VARCHAR(255) NOT NULL DEFAULT '{}';
    

    (juergen_d에 감사) 같은 않는 두 번째 가능성 :

    ALTER TABLE foobar_data CHANGE COLUMN col col VARCHAR(255) NOT NULL DEFAULT '{}';
    
  2. ==============================

    2.같은 그냥 기본값을 설정하려면 확신 당신은 ALTER ... SET 구문을 사용할 수 있습니다, 후속. 그냥 거기에 다른 모든 물건을 넣지 마십시오. 당신은에서 열 정의의 나머지 부분을 넣어 허용 대답에 따라, 수정하거나 변경 구문을 사용하는 거라면.

    같은 그냥 기본값을 설정하려면 확신 당신은 ALTER ... SET 구문을 사용할 수 있습니다, 후속. 그냥 거기에 다른 모든 물건을 넣지 마십시오. 당신은에서 열 정의의 나머지 부분을 넣어 허용 대답에 따라, 수정하거나 변경 구문을 사용하는 거라면.

    어쨌든, (즉, 내가 여기 왔을 때 찾던 이후) 열 기본을 설정하기위한 ALTER 구문 :

    ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT 'literal';
    

    있는 '문자'는 숫자가 될 수있다 (예를 들어 ... SET의 DEFAULT 0). 나는 어로 ... SET DEFAULT CURRENT_TIMESTAMP하지만 왜 그것을 시도하지 않은?

  3. ==============================

    3.이미 생성 된 컬럼에 대한 기본 값을 추가하려면, 이 나를 위해 작동합니다 :

    이미 생성 된 컬럼에 대한 기본 값을 추가하려면, 이 나를 위해 작동합니다 :

    ALTER TABLE Persons
    ALTER credit SET DEFAULT 0.0';
    
  4. ==============================

    4.DEFAULT의 CURRENT_TIMESTAMP 경우 :

    DEFAULT의 CURRENT_TIMESTAMP 경우 :

    ALTER TABLE tablename
     CHANGE COLUMN columnname1 columname1 DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     CHANGE COLUMN columnname2 columname2 DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
    

    이중 럼 이름 선언을 유의하시기 바랍니다

    DEFAULT의 CURRENT_TIMESTAMP 제거 :

    ALTER TABLE tablename
     ALTER COLUMN columnname1 DROP DEFAULT,
     ALTER COLUMN columnname2 DROPT DEFAULT;
    
  5. ==============================

    5.허용 대답은 잘 작동합니다.

    허용 대답은 잘 작동합니다.

    NULL 값에 NULL 값 오류의 잘못된 사용의 경우, 해당 열에 기본값으로 모든 널 (null) 값을 업데이트 한 후 ALTER을하려고합니다.

    UPDATE foobar_data SET col = '{}' WHERE col IS NULL;
    
    ALTER TABLE foobar_data MODIFY COLUMN col VARCHAR(255) NOT NULL DEFAULT '{}';
    
  6. ==============================

    6.경우에는 위는 다음을 시도 당신을 위해하지 작업 (: 당신은 새로운 SQL 또는 푸른로 즉 작업) 않습니다 :

    경우에는 위는 다음을 시도 당신을 위해하지 작업 (: 당신은 새로운 SQL 또는 푸른로 즉 작업) 않습니다 :

    1) 열 제한 (있는 경우)를 기존 드롭 :

    ALTER TABLE [table_name] DROP CONSTRAINT DF_my_constraint
    

    2) 새로 만듭니다 :

    ALTER TABLE [table_name] ADD CONSTRAINT DF_my_constraint  DEFAULT getdate() FOR column_name;
    
  7. ==============================

    7.이 시도

    이 시도

    ALTER TABLE `table_name` CHANGE `column_name` `column_name` data_type  NULL DEFAULT '';
    

    이 같은

    ALTER TABLE `drivers_meta` CHANGE `driving_license` `driving_license` VARCHAR(30) NULL DEFAULT '';
    
  8. from https://stackoverflow.com/questions/11312433/how-to-alter-a-column-and-change-the-default-value by cc-by-sa and MIT license