MySQL數據庫中,我們常常需要使用自動編號來作為主鍵,方便進行數據CRUD操作。如果直接使用整型自增編號,可能會造成數據泄露或者數據安全問題,因此建議使用自動編號字母。
CREATE TABLE user ( id CHAR(8) NOT NULL DEFAULT '', name VARCHAR(20) NOT NULL DEFAULT '', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; DELIMITER $$ CREATE TRIGGER tr_user_insert BEFORE INSERT ON user FOR EACH ROW BEGIN IF NEW.id = '' THEN SET NEW.id = CONCAT(CHAR(FLOOR(RAND() * 26) + 65), CHAR(FLOOR(RAND() * 26) + 65), CHAR(FLOOR(RAND() * 26) + 65), CHAR(FLOOR(RAND() * 26) + 65), CHAR(FLOOR(RAND() * 26) + 65), CHAR(FLOOR(RAND() * 26) + 65), CHAR(FLOOR(RAND() * 26) + 65), CHAR(FLOOR(RAND() * 26) + 65)); END IF; END $$ DELIMITER ;
以上代碼中的user表中id使用了8位字符類型,也就是說可以支持6.5億種不同的編號組合。在插入一個新行數據之前,會自動嵌入一個觸發器,判斷是否已經有自動編號,如果沒有則使用8位16進制數進行自動編號的生成。
使用上述代碼生成的字母編號可以輕易地應用在任何需要自動編號鮮活的表格結構中。
下一篇css向前的箭頭符號