如果为null,则自动递增非PK列(MySQL 5.5)

时间:2016-03-09 12:48:51

标签: mysql

我有一个用户表

CREATE TABLE IF NOT EXISTS `user` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `clientid`  ???
);

如果没有指定,我希望指定clientid(许多家庭成员可以拥有相同的clientid)或来自max clientid的auto_incremented

我尝试了不同的类型,但收到错误:表定义不正确;只能有一个自动列,必须将其定义为键

我想让查询和数据库尽可能简单(如果可能的话,不使用触发器或复杂查询,因为我的ORM不支持它)

1 个答案:

答案 0 :(得分:3)

评论太长了。

您的数据模型似乎已关闭。如果你有一个名为clientid的列,那么我希望你的表有一个名为Clients的表(我的表通常是复数名)。表Clients将具有自动递增的ID。您的上表将使用外键关系引用它:

CREATE TABLE `clients` (
    clientid int not null auto_increment primary key,
    . . .
);

CREATE TABLE IF NOT EXISTS `user` (
  userid bigint(20) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
  clientid int,
  constraint fk_user_client foreign key (clientid) references clients(clientid)
);