我有一个someTable
的表,其中的类型为VARCHAR(4)
。无论何时我插入此表,bin
应该是字符和数字的唯一组合。这种意义上的独特含义在另一排中并未出现在表格中。在SQL中创建唯一的字符串/数字
bin
的形式是AA00
,其中A
是字符A-F而0
是数字0-9。
说我插入此表一次:它应该拿出一个bin
价值,这在以前没有出现。假设表格是空的,第一个bin
可能是AA11
。在第二次插入,它应该是AA12
,然后AA13
等
AA00, AA01, ... AA09, AA10, AA11, ... AA99, AB00, AB01, ... AF99, BA00, BA01, ... FF99
不要紧,这个表只能包含3600可能行。如何创建此代码,具体查找中尚不存在的bin
?它可以按我所描述的顺序排列,也可以是随机的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 |
+------+----------+
除非您决定在应用程序级别执行此操作,否则您需要触发器才能执行此操作。 –