で長さ7正確になりますか? 1人はSメンバー、もう1人は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;
あなたは、本当のシンプル行くだけ「S」または「P」のために列挙されたCHAR(1)と連動して自動インクリメントのIDを使用したい場合。あなたが表示する必要があるときにそれらをまとめておく必要があります。 CHAR(1)列は、メンバーシップ・タイプを判別するために使用できます。
さらにメンバーシップタイプを追加する予定がない場合は、ブール値(0 = 'S'、1 = 'P')としてTINYINTを使用することもできます。これについて
-- 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;
は単純な答えである http://stackoverflow.com/questions/611340/how-can-i-set- autoincrement-format-to-0001-in-mysql –