我的意图是创建一个表与2主键与其中一个自动增量和其他指定插入时,当我为此表创建一个新字段时,它必须开始重新计数,如果不递增主键更改。这是我有什么:1 auto_increment与2个主键
我已经能够得到这个变化表引擎的MyISAM。但有一些缺失,auto_increment
不像以前那样从100开始。
CREATE TABLE CONFIGURABLES(
CODIEI2 INTEGER AUTO_INCREMENT,
CODIEI1 INTEGER,
SKU VARCHAR(30),
COLOR INTEGER,
COLOR2 INTEGER,
TALLA INTEGER,
CONSTRAINT PK_CODIEI PRIMARY KEY(CODIEI1,CODIEI2),
CONSTRAINT FK_CODIEI1 FOREIGN KEY(CODIEI1) REFERENCES PRODUCTOS(ENTITY_ID) ON DELETE CASCADE,
CONSTRAINT FK_CCOLOR FOREIGN KEY(COLOR) REFERENCES COLORES(CODICOL) ON DELETE CASCADE,
CONSTRAINT FK_CCOLOR2 FOREIGN KEY(COLOR2) REFERENCES COLORES(CODICOL) ON DELETE CASCADE,
CONSTRAINT FK_CTALLA FOREIGN KEY(TALLA) REFERENCES TALLAS(CODITLL) ON DELETE CASCADE) ENGINE=MyISAM;
ALTER TABLE CONFIGURABLES AUTO_INCREMENT = 100;
这是发生因为当auto_increment
值是从发动机必须设置为InnoDB的默认号码有什么不同?
有没有办法像我想要的那样得到它?
SOLUTION:
表即可恢复InnoDB的是好多了,没有必要为auto_increment
上CONFIGURABLES
表作为该做插入时,将控制。
CREATE TABLE CONFIGURABLES(
CODIEI2 INTEGER,
CODIEI1 INTEGER,
SKU VARCHAR(30),
COLOR INTEGER,
COLOR2 INTEGER,
TALLA INTEGER,
CONSTRAINT PK_CODIEI PRIMARY KEY(CODIEI1,CODIEI2),
CONSTRAINT FK_CODIEI1 FOREIGN KEY(CODIEI1) REFERENCES PRODUCTOS(ENTITY_ID) ON DELETE CASCADE,
CONSTRAINT FK_CCOLOR FOREIGN KEY(COLOR) REFERENCES COLORES(CODICOL) ON DELETE CASCADE,
CONSTRAINT FK_CCOLOR2 FOREIGN KEY(COLOR2) REFERENCES COLORES(CODICOL) ON DELETE CASCADE,
CONSTRAINT FK_CTALLA FOREIGN KEY(TALLA) REFERENCES TALLAS(CODITLL) ON DELETE CASCADE);
,做插入时,做到这一点:
BEGIN;
SELECT @id := IFNULL(MAX(CODIEI2)+1,100) FROM CONFIGURABLES WHERE CODIEI1 = 10001 FOR UPDATE;
INSERT INTO CONFIGURABLES
(CODIEI1,CODIEI2,SKU,COLOR,COLOR2,TALLA)
VALUES
(10001,@id,'',4,2,2);
COMMIT;
_Two_主键?这是_unpossible!_ :-) – paxdiablo
为了履行FK支持,你需要InnoDB。另一方面,复合auto_increment仅在MyISAM中受支持。所以我想你需要引入代理PK,使你当前的一个只是复合独特的键 –
你确定ALTER TABLE CONFIGURABLES AUTO_INCREMENT = 100;执行?我看起来很好。 – massie