如何用另一列创建标识列?

时间:2016-08-31 06:41:28

标签: mysql tsql

我有一个包含三列的表(ID,Shop& User)。

ID&商店是复合主键

我想根据商店生成身份证号码。

例如, A店的第1位用户 A店的第2位用户 B店的第1位用户

如何根据商店生成此身份证号码。

NumberID ID int身份, 购买varchar(100), user varchar(100)

1 个答案:

答案 0 :(得分:1)

在表的“create statement / s”中执行此操作是特定于数据库类型的。它还需要特定的数据库专业知识(处理棘手的事情,如启动计数器,自动增量值,并行事务期间的值跳跃以提高效率,在备份/恢复期间处理计数器,执行部分主键的复杂性)。可能是一些数据库专家会以防弹的方式回答它。

与此同时,您可以在“插入语句”本身(通过原子方式运行)中在MySQL中执行此操作。这也可以在触发器/过程中工作(根据您希望保护开发人员多少意外插入重复项的情况)。如果您在一个过程中执行此操作,则可以将该过程作为开发人员的主界面(并通过直接插入表中取出访问权限)。

MySQL 5.6架构/插入

create table tt
(
   id int, shop varchar(100), user varchar(100)
 );


insert into tt values (
  ifnull((select max(id) from tt a where a.shop='shop1'),0)+1,
  'shop1',
  'user1'
);

insert into tt values (
  ifnull((select max(id) from tt a where a.shop='shop1'),0)+1,
  'shop1',
  'user1'
);

<强>查询

select * from tt

<强> [结果]

| id |  shop |  user |
|----|-------|-------|
|  1 | shop1 | user1 |
|  2 | shop1 | user1 |