반응형
Mariadb의 함수 호출로 제약 조건 검사를 추가할 수 없습니다.
Ubuntu 18.04에서 Mariadb 10.4.10을 사용하고 있으며 툴 클라이언트는 DBeaver 6.2.5입니다.
Mariadb의 Constraint Check 기능은 10.2.1부터 적용되기 때문에 데이터 무결성을 확보하기 위해 최대한 활용하고 싶습니다.
그러나 기존 테이블에 새로운 제약조건을 추가하려고 할 때마다 오류가 발생합니다.
제가 시도한 쿼리는 다음과 같습니다.
ALTER TABLE mydb.users ADD CONSTRAINT `username_minlen`
CHECK (CHAR_LENGTH(username) >= 6);
에러 메시지는 다음과 같습니다.
SQL 오류 [4025] [23000]: (param=47) 구속조건
username_minlen
에 실패한.mydb
.users
내 추측으로는 이다CHAR_LENGTH
이 문제의 원인입니다.왜냐하면 다음과 같은 쿼리를 실행했을 때:
ALTER TABLE mydb.users ADD CONSTRAINT `username_no_empty_str`
CHECK (username <> '');
이건 잘 작동했어
전화할 수 있는 기능이나 프로시저가 없는지 궁금해서요.CHECK
표현은 있지만, 이에 대한 구글 검색은 만족스러운 답변을 보여주지 않았습니다. 대부분은 Mariadb가 아닌 다른 SQL 시스템과 관련이 있습니다.
Mariadb에서는 통사적으로 호출 기능이 불가능합니까?
먼저 이를 위반하는 데이터가 있는지 확인해야 합니다.
SELECT *
FROM `mydb`.`users`
WHERE CHAR_LENGTH(username) < 6;
그런 다음 업데이트합니다.
UPDATE `mydb`.`users`
SET username = ?
WHERE CHAR_LENGTH(username) < 6;
마지막으로 체크 제약 조건을 적용합니다.
ALTER TABLE mydb.users ADD CONSTRAINT `username_minlen` CHECK (CHAR_LENGTH(username) >= 6);
언급URL : https://stackoverflow.com/questions/59010447/cannot-add-constraint-check-with-function-call-in-mariadb
반응형
'source' 카테고리의 다른 글
POSTMAN 요청을 Curl로 변환 (0) | 2022.11.16 |
---|---|
키가 있는 어레이의 루프용 트위그 (0) | 2022.11.16 |
특정 페이지에서만 Vue Router 액세스 경로 (0) | 2022.11.16 |
문자열의 첫 번째 문자가 0인 경우 삭제 (0) | 2022.11.16 |
Python에서 비동기 메서드 호출? (0) | 2022.11.16 |