MySQL 기본 ID UUID 설정
데이터베이스에 다음이 있는 테이블을 작성하려고 합니다.id
기본적으로 UUID로 ID를 채울 필드입니다.
저는 다음과 같은 것을 시도했습니다.
CREATE TABLE FOO (
id CHAR(36) PRIMARY KEY DEFAULT uuid()
);
당신의 도움에 대단히 감사합니다.
MySQL 5.7, 8.0.12 이상
5.7 또는 8.0.12의 MySQL은 열의 기본값으로 함수 또는 식을 사용하는 것을 지원하지 않습니다.
데이터 형식 규격의 DEFAULT value 절은 열의 기본값을 나타냅니다.한 가지 예외를 제외하고 기본값은 상수여야 하며 함수 또는 식을 사용할 수 없습니다.
https://dev.mysql.com/doc/refman/5.7/en/data-type-defaults.html
다른 대안은 트리거를 사용하여 다음을 모니터링하는 것입니다.BEFORE INSERT
원하는 테이블의.
DELIMITER ;;
CREATE TRIGGER `foo_before_insert`
BEFORE INSERT ON `foo` FOR EACH ROW
BEGIN
IF new.id IS NULL THEN
SET new.id = uuid();
END IF;
END;;
DELIMITER ;
이 작업을 수행하면 의 기본값이 변경됩니다.INSERT
에 대한 진술.uuid()
값(명시적으로 정의되지 않은 경우).
MySQL 8.0.13 이상
MySQL 8.0.13 릴리스에서는 괄호 안에 포함된 식을 기본값으로 사용할 수 있습니다.
에 지정된 기본값
DEFAULT
절은 문자 상수 또는 식일 수 있습니다.한 가지 예외를 제외하고 표현식 기본값을 괄호 안에 넣어 리터럴 상수 기본값과 구분합니다.예외는 다음과 같습니다.TIMESTAMP
그리고.DATETIME
열, 사용자가 지정할 수 있습니다.CURRENT_TIMESTAMP
기본값으로 [sublish](괄호를 포함하지 않습니다.CREATE TABLE foo (b BINARY(16) DEFAULT (UUID_TO_BIN(UUID())));
새 행을 삽입할 때 열 이름을 생략하거나 열을 다음과 같이 지정하여 식이 기본값인 열에 대한 기본값을 삽입할 수 있습니다.
DEFAULT
(문자 기본값이 있는 열의 경우와 마찬가지로):INSERT INTO foo () VALUES(); INSERT INTO foo () VALUES(DEFAULT);
https://dev.mysql.com/doc/refman/8.0/en/data-type-defaults.html
MySql 버전 8 이상의 경우에는 에서 답을 찾을 수 있습니다. MySql에서 기본값으로 함수를 사용할 수 있습니까?
CREATE TABLE t1 ( 'uuid_field' VARCHAR(32) DEFAULT (uuid());
사용하는 경우binary(16)
유형으로 다음과 같이 기본값을 설정할 수 있습니다.
unhex(replace(uuid(),'-',''))
언급URL : https://stackoverflow.com/questions/46134550/mysql-set-default-id-uuid
'programing' 카테고리의 다른 글
재료 설계 및 AppCompat을 사용하는 Android의 컬러링 버튼 (0) | 2023.09.02 |
---|---|
jQuery를 사용하여 드롭다운 옵션을 선택하는 방법은 무엇입니까? (0) | 2023.09.02 |
Swift에서 Double 및 Float의 최대값을 찾는 방법 (0) | 2023.08.28 |
파일 선택 시 이벤트를 발생시키는 방법 (0) | 2023.08.28 |
Android L에서는 작업 표시줄 탐색 모드가 더 이상 사용되지 않습니다. (0) | 2023.08.28 |