我有一个包含三列的表(ID,Shop& User)。
ID&商店是复合主键
我想根据商店生成身份证号码。
例如, A店的第1位用户 A店的第2位用户 B店的第1位用户
如何根据商店生成此身份证号码。
NumberID ID int身份, 购买varchar(100), user varchar(100)
答案 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 |