首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用另一列创建标识列?

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

Stack Overflow用户
提问于 2016-08-31 06:41:28
回答 1查看 49关注 0票数 1

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

ID和Shop是复合主键

我想要根据商店的身份号码。

例如,A店的第一用户,第二铺的用户,第一铺的用户,B商店的用户

我如何根据商店生成这个身份号码。

NumberID ID int标识,Shop varchar(100),user varchar(100)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-31 07:30:05

在表本身的"create语句/s“中这样做是特定于数据库类型的。它还需要特定的DB专业知识(处理棘手的事情,如启动计数器、自动增量值、在并行事务中跳转以提高效率、在备份/恢复期间照顾计数器、为部分主键执行复杂操作)。也许是一些数据库专家会以一种防弹的方式回答这个问题。

同时,下面是如何在"insert语句“本身中(通过原子地运行它)在MySQL中执行该操作。这也可以在触发器/过程中起作用(根据您的情况,您希望保护开发人员避免意外插入副本)。如果您在一个过程中这样做,您可以将该过程作为您的主接口给开发人员(并从直接插入到表中获取他们的访问权限)。

MySQL 5.6架构/插入

代码语言:javascript
复制
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'
);

查询

代码语言:javascript
复制
select * from tt

结果

代码语言:javascript
复制
| id |  shop |  user |
|----|-------|-------|
|  1 | shop1 | user1 |
|  2 | shop1 | user1 |
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39242444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档