의 bin
열이있는 테이블이 있습니다. 이 표에 삽입 할 때마다 bin
은 고유 한 문자 및 숫자 조합이어야합니다. 이러한 의미에서의 독특한 의미는 이전에 다른 행의 표에 나타나지 않았습니다.SQL에서 고유 한 문자/문자열 만들기
bin
은 AA00
이며, A
은 문자 A-F이고 0
은 숫자 0-9입니다.
내가이 테이블에 한 번 넣으면 다음과 같이 표시됩니다. 전에 표시되지 않은 bin
값이 있어야한다고 말합니다. 테이블이 비어 있다고 가정하면 bin
은 AA11
일 수 있습니다. 2 삽입에,이 표는 단지 3,600 가능한 행들을 포함 할 수있는 문제가되지 않는다
AA00, AA01, ... AA09, AA10, AA11, ... AA99, AB00, AB01, ... AF99, BA00, BA01, ... FF99
등 AA12
하고 AA13
을해야한다. 이 코드를 만들려면 bin
이 이미 someTable
에없는 것을 찾으려면 어떻게해야합니까? 설명 된대로 순서대로 수행하거나 두 번 나타나지 않는 한 임의의 bin
일 수 있습니다.
CREATE TABLE someTable (
bin VARCHAR(4),
someText VARCHAR(32),
PRIMARY KEY(bin)
);
INSERT INTO someTable
VALUES('?', 'a');
INSERT INTO someTable
VALUES('?', 'b');
INSERT INTO someTable
VALUES('?', 'c');
INSERT INTO someTable
VALUES('?', 'd');
또는 내가 대신 삽입 아래의 절차를 사용할 수 있습니다 :
CREATE PROCEDURE insert_someTable(tsomeText VARCHAR(32))
BEGIN
DECLARE var (VARCHAR(4) DEFAULT (
-- some code to find unique bin
);
INSERT INTO someTable
VALUES(var, tsomeText);
END
가능한 결과는 다음과 같습니다 고든의 말처럼
+------+----------+
| bin | someText |
+------+----------+
| AB31 | a |
| FC10 | b |
| BB22 | c |
| AF92 | d |
+------+----------+
응용 프로그램 수준에서 수행하기로 결정하지 않는 한 트리거가 필요합니다. –