고유한 이름을 가진 테이블 생성
노드를 사용하여 마리아DB 10.3 데이터베이스에 비임시 테이블을 만들어야 합니다.따라서 고유한 테이블 이름을 생성하는 방법이 필요합니다.
Node 함수는 테이블이 만들어진 항목 또는 시간에 대한 고유한 기능에 대한 정보에 액세스할 수 없으므로 타임스탬프 또는 연결 ID로 이름을 작성할 수 없습니다.현재 데이터베이스를 사용해야만 이름의 고유성을 확인할 수 있습니다.
이 질문에는 Postgre가 있습니다.다음을 제안하는 SQL 답변:
SET @name = GetBigRandomNumber();
WHILE TableExists(@name)
BEGIN
SET @name = GetBigRandomNumber();
END
다음을 사용하여 MariaDB 구현을 시도했습니다.@name = CONCAT(MD5(RAND()),MD5(RAND()))
임의의 64문자열을 생성합니다.(COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE @name) >0
고유한 이름인지 확인합니다.
SET @name = CONCAT(MD5(RAND()),MD5(RAND()));
WHILE ((COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE @name) >0) DO
SET @name = CONCAT(MD5(RAND()),MD5(RAND()));
END WHILE;
CREATE TABLE @name ( ... );
그러나 위 쿼리를 실행하려고 하면 구문 오류가 발생합니다.제 SQL 지식이 부족해서 어떤 문제가 있을지 모르겠습니다.
또한 이 접근 방식이 효율적입니까?임의로 생성된 이름은 데이터베이스의 현재 테이블과 충돌할 가능성이 매우 낮을 정도로 충분히 길기 때문에,WHILE
루프를 실행할 필요가 거의 없을 것입니다. 하지만 테이블 이름을 자동으로 증분하는 일종의 내장 함수가 있습니까? 아니면 유사한 기능이 있습니까?
SET @name := UUID();
만약 그 안에 있는 대시가 문제를 일으킨다면,
SET @name := REPLACE(UUID(), '-', '');
보다 안전할 것입니다.RAND()
그리고, 이론적으로, 그것의 고유성을 검증할 필요가 없을 것입니다.결국, 그것이 UUID의 목적입니다.
언급URL : https://stackoverflow.com/questions/52889679/generate-tables-with-unique-names
'programing' 카테고리의 다른 글
iPhone Simulator에 자체 서명 인증서를 추가하시겠습니까? (0) | 2023.06.24 |
---|---|
SQL Server: 새 ID 열을 추가하고 열을 ID로 채우는 방법은 무엇입니까? (0) | 2023.06.24 |
URL 주소를 이미 알고 있는 Python을 사용하여 이미지를 로컬로 저장하는 방법은 무엇입니까? (0) | 2023.06.24 |
SQL Server에서 CREATE OR REPLACE VIEW를 작동시키는 방법은 무엇입니까? (0) | 2023.06.24 |
Android 앱에서 Google Firebase 로그아웃 및 사용자 잊기 (0) | 2023.06.24 |