【问题标题】:How to generate IDs' in order according to the date in c#如何根据c#中的日期按顺序生成ID
【发布时间】:2015-07-26 15:27:10
【问题描述】:

如何在用户注册时为其生成 ID。我想要的那种 ID 采用这种格式:(ABCDEF2015xxx)。例如,在 2015 年注册的第一个用户将具有此 ID:ABCDEF2015001。下一个用户的 ID 为:ABCDEF2015002。并且在下一年,第一个用户将拥有 id:ABCDEF2016001。

问候。

【问题讨论】:

  • 这是进入某种数据库吗?
  • 是的。它应该是有序的
  • 什么数据库?您也许可以使用复合键...
  • 你用的是什么数据库?
  • 我希望这不是主键。将任何语义含义放在主键中被认为是不好的做法(通常,主键应该是一个简单的整数)。

标签: c# date uniqueidentifier auto-generate inorder


【解决方案1】:

我认为你可以通过使用触发器来实现。我从来没有用过mysql。但是用谷歌搜索并写了一些示例触发器。我可能不会那样工作,你可能需要解决一些问题。但是你可以遵循同样的想法。

CREATE TRIGGER tg_table1_insert
BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
  INSERT INTO table1_seq VALUES (NULL);
    $query = mysql_query(CONCAT('SELECT max(CAST(SUBSTRING(id,11) AS BIGINT)) as id FROM table1 where SUBSTRING(ID,7,4) =',CAST(YEAR() AS CHAR))); 
    while ($row = mysql_fetch_object($query)) {
    $lastId =  $row->id;
  }
  if($lastid IS NULL) THEN
  $newid = CONCAT('ABCDEF', CAST(YEAR() AS CHAR), '001')
  ELSE
  $newid = CONCAT('ABCDEF', CAST(YEAR() AS CHAR), CAST($lastId+1 AS CHAR))
  END IF;
  SET NEW.id = $newid;
END$$

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    相关资源
    最近更新 更多