MariaDB Virtual Columns - 해시를 얻을 수 있습니까?
MariaDB에는 다른 열 데이터에 대한 작업을 자동으로 수행할 수 있는 가상 열이 있습니다.예를 들어, 아래 표 정의에 나타난 것처럼 단순히 10 또는 1000으로 나누어 메트릭 측정의 다른 단위로 데이터를 표시하려면 이 방법이 좋습니다.
CREATE TABLE a (
id INT NOT NULL AUTO_INCREMENT,
distance_meters INT (11),
distance_kilometers FLOAT (11,3) AS (distance_meters / 1000) VIRTUAL,
PRIMARY KEY ( id )
) ENGINE=InnoDB;
그러나 테이블 열의 하위 집합의 해시인 가상 열을 만들려면 어떻게 해야 합니까?예: 아래 표는 이름과 급여를 해시하는 것을 목적으로 하고 있기 때문에 이전 해시 리스트와 비교하여 나중에 직원 이름이나 급여가 변경되었는지 쉽게 확인할 수 있습니다.나는 전체 줄의 해시를 원하지 않는다.
CREATE TABLE employees (
id INT NOT NULL,
name VARCHAR(200),
salary INT(12),
age int(3),
hash VARCHAR(AS (MD5(concat(name, salary)))) PERSISTENT,
PRIMARY KEY ( id )
) ENGINE=InnoDB;
https://mariadb.com/kb/en/mariadb/documentation/sql-commands/data-definition/create/virtual-columns/에서 설명한 대로 중괄호를 사용하여 구문을 사용합니다.
교체하다VARCHAR타고CHAR(32)md5 해시의 길이는 32자입니다.
사용하다concat_ws대신concat이름이나 급여가 있을 때 적절히 처리하다NULL이름과 급여는 공백으로 구분합니다.
CREATE TABLE employees (
id INT NOT NULL,
name VARCHAR(200),
salary INT(12),
age int(3),
hash CHAR(32) AS (MD5(concat_ws(' ', name, salary))) PERSISTENT,
PRIMARY KEY ( id )
) ENGINE=InnoDB;
이 표현은 MariaDB 가상 컬럼에 대해 완전히 합법적입니다.영구 열이므로 인덱싱할 수도 있습니다.
참고로 VARCHAR 뒤에 구문 오류가 있습니다.
언급URL : https://stackoverflow.com/questions/27204514/mariadb-virtual-columns-can-i-have-a-hash
'source' 카테고리의 다른 글
| PDO 준비 문에서 원시 SQL 쿼리 문자열을 가져오는 중 (0) | 2023.01.16 |
|---|---|
| mariadb 출력에 대시가 너무 많습니다. (0) | 2023.01.16 |
| Npm 설치에서 'semver' 모듈을 찾을 수 없습니다. (0) | 2023.01.16 |
| Pymysql 삽입이 작동하지 않음 (0) | 2023.01.16 |
| MariaDB 커넥터에서 orora 설정 후 DB 연결 증가 (0) | 2023.01.16 |