我有桌子:
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
开始,每次添加都会增加。
但是现在我无法创建表格。当我运行查询来创建表时,我收到错误消息“表定义不正确;只能有一个自动列,必须将其定义为键”
有人可以帮忙吗?
答案 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;