自定义类型自动增量 ID 代码点火器


Custom type auto increment id codeigniter

我的mysql数据库中有一个名为user的表。我有一个自动递增id字段和一个member_id字段。以及另一个用于选择包装的单选按钮。 S for standard and P for premium .我想根据所选包将我的成员 ID 设置为第一个 id 的P000001S000001

For example if the first member choose P his member_id will be P000001
            if the second member choose S his member_id will be S000002
            if the third member choose S his member_id will be S000003
            ...
            ...

member_id的长度为 7,带有 P 或 S。

您可以简单地使用此查询

select lpad(member_id,8,'0')
from table
where id = 1

为什么不干脆有两个表?一个用于 S 成员,一个用于 P 成员。您可以使用零填充的 ID。如果数字绝对是唯一的,即您不希望S000001和P000001都存在,请使用另一个表来存储唯一 ID 并在 S 和 P 表中引用它们。

像这样:

-- Table `ids`
CREATE  TABLE IF NOT EXISTS `ids` (
  `master_id` INT ZEROFILL NOT NULL AUTO_INCREMENT ,
  `member_type` ENUM('S','P') NULL ,
  PRIMARY KEY (`master_id`) )
ENGINE = InnoDB;

-- Table `s_type`
CREATE  TABLE IF NOT EXISTS `s_type` (
  `s_type_id` INT NOT NULL ,
  `master_id` INT NULL ,
  PRIMARY KEY (`s_type_id`) ,
  INDEX `fk_s_type_1` (`s_type_id` ASC) ,
  CONSTRAINT `fk_s_type_1`
    FOREIGN KEY (`s_type_id` )
    REFERENCES `ids` (`master_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- Table `s_type_copy1`
CREATE  TABLE IF NOT EXISTS `s_type_copy1` (
  `p_type_id` INT NOT NULL ,
  `master_id` INT NULL ,
  PRIMARY KEY (`p_type_id`) ,
  INDEX `fk_s_type_copy1_1` (`p_type_id` ASC) ,
  CONSTRAINT `fk_s_type_copy1_1`
    FOREIGN KEY (`p_type_id` )
    REFERENCES `ids` (`master_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

如果你想变得非常简单,只需使用自动递增的 id 和枚举的 CHAR(1) 作为"S"或"P"。您只需要在需要显示时将它们放在一起即可。CHAR(1) 列可用于确定成员类型。

如果您不打算添加其他成员类型,您甚至可以使用 TINYINT 作为布尔值(0 = 'S', 1 = 'P')。

-- Table `ids`
CREATE  TABLE IF NOT EXISTS `ids` (
  `member_id` INT ZEROFILL NOT NULL AUTO_INCREMENT ,
  `member_type` ENUM('S','P') NULL ,
  PRIMARY KEY (`member_id`) )
ENGINE = InnoDB;

。或。。。

-- Table `ids`
CREATE  TABLE IF NOT EXISTS `ids` (
  `member_id` INT ZEROFILL NOT NULL AUTO_INCREMENT ,
  `member_type` TINYINT ,
  PRIMARY KEY (`member_id`) )
ENGINE = InnoDB;

这个怎么样。

假设您有 10 个人使用高级版,8 人使用标准版。

新人加入标准帐户。

function add_user($account_type)
{
   $count = query->result(SELECT COUNT(*) WHERE `member_id` LIKE '$account_type_%');
   $count = $count+1;
   convert count into 7 characters;
   $count = $account_type.$count;
   insert into database;
}

LIKE 是匹配部分结果的 SQL 查询,而 % 充当通配符。

源 = http://www.techonthenet.com/sql/like.php