根据组织ID自动递增用户ID

时间:2013-07-30 09:24:33

标签: mysql

我有桌子:

user(org_id, user_id, email, password)
organisation(org_id, org_name)

我希望organisation内的所有用户都以用户ID 1开头,并且每次添加另一个用户时都会增加1。所以我可以在一个组织中拥有用户1,用户2,用户3,在另一个organisation内拥有用户1,用户2,用户3。

在几年前的MySQL早期版本中,我这样做了:

create table users (
  org_id int unsigned, 
  user_id int unsigned auto_increment, 
  email varchar(100), 
  primary key (org_id, user_id), 
  unique key (email, org_id)
);

insert users (org_id, email) values(1, 'user1@example.com'), 
                                   (1, 'user2@example.com'), 
                                   (2, 'user3@example.com'), 
                                   (3, 'user4@example.com'), 
                                   (2, 'user5@example.com');

这给了我下表:

org_id | user_id | email

1 | 1 | user1@example.com

1 | 2 | user2@example.com

2 | 1 | user3@example.com

3 | 1 | user4@example.com

2 | 2 | user5@example.com

正如您所看到的,每个org_id中的用户都从user_id开始,每次添加都会增加。

但是现在我无法创建表格。当我运行查询来创建表时,我收到错误消息“表定义不正确;只能有一个自动列,必须将其定义为键”

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

通过将您的引擎类型从INNODB更改为MyISAM,您可以使其正常工作。

create table users (
 org_id int unsigned, user_id int unsigned auto_increment, 
 email varchar(100), 
 primary key (org_id, user_id), 
 unique key (email,  org_id)
)ENGINE=MyISAM;