自动生成主键的最佳方法是什么?

时间:2016-02-29 20:01:29

标签: mysql sql database

我想在MySQL数据表中自动生成主键。但是我希望它按顺序成为一个字符串。

实施例: user_id(主键)

USER000001

USER000002

USER000003

USER000004 ....等等..

2 个答案:

答案 0 :(得分:-1)

通过单独的排序表和触发器,您可以使用您的格式自动生成PK。

CREATE TABLE tableName_seq
(
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
);
CREATE TABLE tableName
(
  id VARCHAR(10) NOT NULL PRIMARY KEY DEFAULT '0', name VARCHAR(30)
);

现在是触发器

DELIMITER $$
CREATE TRIGGER tg_table_insert
BEFORE INSERT ON tableName
FOR EACH ROW
BEGIN
  INSERT INTO tableName_seq VALUES (NULL);
  SET NEW.id = CONCAT('USER', LPAD(LAST_INSERT_ID(), 6, '0'));
END$$
DELIMITER ;

然后你只需要在表中插入行

INSERT INTO tableName (name) 
VALUES ('Jhon'), ('Mark');

你会有

|         ID | NAME |
------------------
| USER000001 | Jhon |
| USER000002 | Mark |

答案 1 :(得分:-1)

如果您使用的是领域:

fun newIdByTime(): Long {
    val id =  System.currentTimeMillis()
    val realm = RealmManager.getNewInstance()
    val number = realm.where(Note::class.java)
        .equalTo("id",id)
        .findFirst()
    if (number!=null) {while(id ==System.currentTimeMillis()){}}
    return System.currentTimeMillis()

}
相关问题