programing

열을 변경하고 기본값을 변경하려면 어떻게 해야 합니까?

shortcode 2022. 9. 18. 17:51
반응형

열을 변경하고 기본값을 변경하려면 어떻게 해야 합니까?

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

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

ERROR 1064(42000):SQL 구문에 오류가 있습니다. MySQL Server 버전에 해당하는 설명서에서 1행의 'VARCHAR(255) NOT NULL SET DEFAULT '{}' 근처에서 사용할 올바른 구문을 확인하십시오.

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 '{}';

디폴트 설정만 하고 싶다면 ALTER ..SET 구문을 사용할 수 있습니다.다른 건 다 넣지 마세요나머지 열 정의를 삽입하려면 승인된 답변에 따라 MODIFY 또는 CHANGE 구문을 사용합니다.

열 기본값을 설정하기 위한 ALTER 구문(여기 왔을 때 찾고 있던 것이었으므로):

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

이 경우 '리터럴'은 숫자일 수도 있습니다(예:...SET DEFAULT 0) 에서는 사용해 본 적이 없습니다....SET DEFAULT CURRENT_TIMESTAMP하지만 왜 안 되지?

이미 작성된 컬럼에 기본값을 추가할 경우 다음 절차를 수행합니다.

ALTER TABLE Persons
ALTER credit SET DEFAULT 0.0;

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;

위의 내용이 적합하지 않은 경우(즉, 새로운 SQL 또는 Azure를 사용하는 경우) 다음을 시도해 보십시오.

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;

[ Accepted Answer ]는 정상적으로 동작합니다.

Invalid use of NULL value 오류가 발생한 경우 NULL 에서 모든 NULL 값을 해당 컬럼의 기본값으로 업데이트한 후 변경을 시도합니다.

UPDATE foobar_data SET col = '{}' WHERE col IS NULL;

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

이거 드셔보세요

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 '';

다음 접근방식을 사용합니다.

테이블 foobar_data CHANGE 컬럼 col VARCHAR(255)을 변경합니다.기본값은 NULL로 설정되어 있지 않습니다.

언급URL : https://stackoverflow.com/questions/11312433/how-to-alter-a-column-and-change-the-default-value

반응형